Jerome Pouiller <Jerome.Pouiller@xxxxxxxxxx> writes: > From: Jérôme Pouiller <jerome.pouiller@xxxxxxxxxx> > > Smatch complains: > > main.c:228 wfx_send_pdata_pds() warn: potential NULL parameter dereference 'tmp_buf' > 227 tmp_buf = kmemdup(pds->data, pds->size, GFP_KERNEL); > 228 ret = wfx_send_pds(wdev, tmp_buf, pds->size); > ^^^^^^^ > 229 kfree(tmp_buf); > > Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > Signed-off-by: Jérôme Pouiller <jerome.pouiller@xxxxxxxxxx> > --- > drivers/staging/wfx/main.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/staging/wfx/main.c b/drivers/staging/wfx/main.c > index df11c091e094..a8dc2c033410 100644 > --- a/drivers/staging/wfx/main.c > +++ b/drivers/staging/wfx/main.c > @@ -222,12 +222,18 @@ static int wfx_send_pdata_pds(struct wfx_dev *wdev) > if (ret) { > dev_err(wdev->dev, "can't load PDS file %s\n", > wdev->pdata.file_pds); > - return ret; > + goto err1; > } > tmp_buf = kmemdup(pds->data, pds->size, GFP_KERNEL); > + if (!tmp_buf) { > + ret = -ENOMEM; > + goto err2; > + } > ret = wfx_send_pds(wdev, tmp_buf, pds->size); > kfree(tmp_buf); > +err2: > release_firmware(pds); > +err1: > return ret; > } A minor style issue but using more descriptive error labels make the code more readable and maintainable, especially in a bigger function. For example, err2 could be called err_release_firmware. And actually err1 could be removed and the goto replaced with just "return ret;". Then err2 could be renamed to a simple err. -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches