Message ID | 20240218174853.6492-1-brgl@bgdev.pl |
---|---|
State | New |
Headers | show |
Series | gpio: fix memory leak in gpiod_request_commit() | expand |
On Sun, Feb 18, 2024 at 6:49 PM Bartosz Golaszewski <brgl@bgdev.pl> wrote: > > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> > > We now copy the label string directly in desc_set_label() so it must not > be done a second time in gpiod_request_commit(). > > Fixes: 1f2bcb8c8ccd ("gpio: protect the descriptor label with SRCU") > Reported-by: Xiaolei Wang <xiaolei.wang@windriver.com> > Closes: https://lore.kernel.org/all/20240217135255.1128716-1-xiaolei.wang@windriver.com/T/ > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> > --- > drivers/gpio/gpiolib.c | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c > index e4dd13d81b4d..3c22920bd201 100644 > --- a/drivers/gpio/gpiolib.c > +++ b/drivers/gpio/gpiolib.c > @@ -2250,12 +2250,6 @@ static int gpiod_request_commit(struct gpio_desc *desc, const char *label) > if (test_and_set_bit(FLAG_REQUESTED, &desc->flags)) > return -EBUSY; > > - if (label) { > - label = kstrdup_const(label, GFP_KERNEL); > - if (!label) > - return -ENOMEM; > - } > - > /* NOTE: gpio_request() can be called in early boot, > * before IRQs are enabled, for non-sleeping (SOC) GPIOs. > */ > -- > 2.40.1 > I should probably stop coding while sleep-deprived and in the evening, I realized now I sent the exact same fix as you. I thought this was removing the allocation from desc_set_label() and not gpiod_request_commit(). I'll go ahead and apply your patch and you can disregard this thread. Thanks! Bartosz
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index e4dd13d81b4d..3c22920bd201 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -2250,12 +2250,6 @@ static int gpiod_request_commit(struct gpio_desc *desc, const char *label) if (test_and_set_bit(FLAG_REQUESTED, &desc->flags)) return -EBUSY; - if (label) { - label = kstrdup_const(label, GFP_KERNEL); - if (!label) - return -ENOMEM; - } - /* NOTE: gpio_request() can be called in early boot, * before IRQs are enabled, for non-sleeping (SOC) GPIOs. */