[PATCH 34/44] staging: unisys: Prepare vbus_hdr_info to be public
Don Zickus
dzickus at redhat.com
Mon May 18 14:52:25 UTC 2015
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
More information about the devel
mailing list