On Sat, May 16, 2015 at 02:22:16PM +0300, Dan Carpenter wrote: > On Wed, May 13, 2015 at 01:22:28PM -0400, Benjamin Romer wrote: > > + hdr_info = kzalloc(sizeof(*hdr_info), GFP_KERNEL); > > + if (!hdr_info) { > > + rc = NULL; > > + goto away_mem; > > + } > > + > > dev_set_name(&devdata->dev, "visorbus%d", id); > > devdata->dev.bus = &visorbus_type; > > devdata->dev.groups = visorbus_groups; > > @@ -1344,26 +1352,19 @@ create_bus_instance(struct visorchipset_bus_info *bus_info) > > POSTCODE_LINUX_3(DEVICE_CREATE_FAILURE_PC, id, > > POSTCODE_SEVERITY_ERR); > > rc = NULL; > > - goto away; > > + goto away_mem2; > > } > > devdata->devno = id; > > devdata->chan = bus_info->visorchannel; > > if (bus_info->flags.server) { > > init_vbus_channel(devdata->chan); > > } else { > > - if (get_vbus_header_info(devdata->chan, > > - &devdata-> > > - vbus_hdr_info) >= 0) { > > - devdata->vbus_valid = true; > > - write_vbus_chp_info(devdata->chan, > > - &devdata-> > > - vbus_hdr_info, > > - &chipset_driverinfo > > - ); > > - write_vbus_bus_info(devdata->chan, > > - &devdata-> > > - vbus_hdr_info, > > - &clientbus_driverinfo); > > + if (get_vbus_header_info(devdata->chan, hdr_info) >= 0) { > > + devdata->vbus_hdr_info = (void *)hdr_info; > > + write_vbus_chp_info(devdata->chan, hdr_info, > > + &chipset_driverinfo); > > + write_vbus_bus_info(devdata->chan, hdr_info, > > + &clientbus_driverinfo); > > } > > } > > bus_count++; > > We still leak hdr_info on some paths. Agreed. I noticed and fixed this up in patch 37 "Remove server flags". Simplifying the code made the problem stand out eaiser. I can migrate the fix to this patch if you want. Cheers, Don _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel