Messages in this thread | | | Date | Fri, 18 Feb 2022 14:34:22 +0300 | From | Dan Carpenter <> | Subject | Re: [PATCH 1/2] staging: wfx: fix the error handling in wfx_init_common() |
| |
On Thu, Feb 17, 2022 at 11:47:21PM +0800, xkernel.wang@foxmail.com wrote: > diff --git a/drivers/staging/wfx/main.c b/drivers/staging/wfx/main.c > index 4b9fdf9..f83df9f 100644 > --- a/drivers/staging/wfx/main.c > +++ b/drivers/staging/wfx/main.c > @@ -309,7 +309,8 @@ struct wfx_dev *wfx_init_common(struct device *dev, > wdev->pdata.gpio_wakeup = devm_gpiod_get_optional(dev, "wakeup", > GPIOD_OUT_LOW); > if (IS_ERR(wdev->pdata.gpio_wakeup)) > - return NULL; > + goto err; > + > if (wdev->pdata.gpio_wakeup) > gpiod_set_consumer_name(wdev->pdata.gpio_wakeup, "wfx wakeup"); > > @@ -325,9 +326,13 @@ struct wfx_dev *wfx_init_common(struct device *dev, > wdev->force_ps_timeout = -1; > > if (devm_add_action_or_reset(dev, wfx_free_common, wdev)) > - return NULL; > + goto err;
No, this goto introduces a double free. devm_add_action_or_reset() will call wfx_free_common() on failure and then we call it again after the goto.
regards, dan carpenter
> > return wdev; > + > +err: > + ieee80211_free_hw(hw); > + return NULL; > }
Also the patchset was not sent as a thread.
regards, dan carpenter
| |