Re: [PATCH v5 1/7] gpiolib: wait for pending label frees before cleaning up desc_srcu
From: Andy Shevchenko
Date: Tue Nov 03 2026 - 06:40:43 EST
On Tue, Nov 03, 2026 at 12:32:34PM +0200, Adrian Ambrozewicz wrote:
> desc_set_label() frees the old label with call_srcu() on
> gdev->desc_srcu, and gpiodev_release() calls synchronize_srcu() before
> cleanup_srcu_struct(). synchronize_srcu() waits for a grace period, not
> for queued callbacks. Once the srcu_struct uses per-CPU callback lists,
> a label freed by gpiochip_free_hogs() can still be pending, and
> cleanup_srcu_struct() warns:
>
> WARNING: kernel/rcu/srcutree.c:706 at cleanup_srcu_struct+0x239/0x330, CPU#0: init/1
> Call Trace:
> gpiodev_release
> device_release
> kobject_put
> devres_release_all
> device_release_driver_internal
> platform_device_unregister
> gpio_sim_device_deactivate
>
> Use srcu_barrier(), which waits for them.
>
> Reproduced with a hogged gpio-sim line, setting the chip live and back
> on a 4-CPU guest with srcutree.convert_to_big=1: it warns within 60
> cycles; with this change, 1000 cycles pass.
...
> Assisted-by: LLM
This tag is obsoleted. Instead explain under '---' how AI has been used to
generate this contribution.
--
With Best Regards,
Andy Shevchenko