Hi, On Mon, Apr 11, 2022 at 10:01:25AM +0300, Dan Carpenter wrote: > Hello Takashi Sakamoto, > > The patch baa914cd81f5: "firewire: add kernel API to access > CYCLE_TIME register" from Apr 5, 2022, leads to the following Smatch > static checker warning: > > drivers/firewire/core-cdev.c:1235 ioctl_get_cycle_timer2() > error: uninitialized symbol 'cycle_time'. > > drivers/firewire/core-cdev.c > 1209 static int ioctl_get_cycle_timer2(struct client *client, union ioctl_arg *arg) > 1210 { > 1211 struct fw_cdev_get_cycle_timer2 *a = &arg->get_cycle_timer2; > 1212 struct fw_card *card = client->device->card; > 1213 struct timespec64 ts = {0, 0}; > 1214 u32 cycle_time; > 1215 int ret = 0; > 1216 > 1217 local_irq_disable(); > 1218 > 1219 ret = fw_card_read_cycle_time(card, &cycle_time); > 1220 if (ret < 0) > 1221 goto end; > ^^^^^^^^ > "cycle_time" not initialized on error path. > > 1222 > 1223 switch (a->clk_id) { > 1224 case CLOCK_REALTIME: ktime_get_real_ts64(&ts); break; > 1225 case CLOCK_MONOTONIC: ktime_get_ts64(&ts); break; > 1226 case CLOCK_MONOTONIC_RAW: ktime_get_raw_ts64(&ts); break; > 1227 default: > 1228 ret = -EINVAL; > 1229 } > 1230 end: > 1231 local_irq_enable(); > 1232 > 1233 a->tv_sec = ts.tv_sec; > 1234 a->tv_nsec = ts.tv_nsec; > --> 1235 a->cycle_timer = cycle_time; > 1236 > 1237 return ret; > 1238 } Thanks for the report. Indeed, it leaks the unidentified value on kernel stack to userspace. I'll post fix later. Regards Takashi Sakamoto