gpiolib: use a read-write semaphore to protect the GPIO device list
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest3 patches 6 repliesIn review
- v12 patches 1 replySuperseded
Changes in v2 from the cover letter
- add patch 1/3 to fix a release timing issue
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | gpiolib: remove the GPIO device from the list when it's unregistereddrivers/ | +3 | 1 reply | |
| 2/3 | gpiolib: replace the GPIO device mutex with a read-write semaphoredrivers/ drivers/ drivers/ | +11 | 1 reply | |
| 3/3 | gpiolib: pin GPIO devices in place during descriptor lookupdrivers/ | +23 | 3 replies |
Reviews trailers per patch
All 3 patches have a Reviewed-by or Acked-by.
| Patch | Linus Walleij |
|---|---|
| 1/3 | R-b |
| 2/3 | R-b |
| 3/3 | R-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH v2 0/3] gpiolib: use a read-write semaphore to protect the GPIO device list
From: Bartosz Golaszewski <[email protected]>
I'm still figuring out how to keep GPIO descriptors coherent while (mostly) lockless. In the meantime, I found a potential race-condition during GPIO descriptor lookup and also figured that the correct way to protect the GPIO device list is actually a read-write semaphore as we're not modifying the list very often and readers should be able to iterate over it concurrently.
The first patch in this series is new in v2. I realized that we must not wait until .release() to remove the GPIO device from the list as this is why pinning down the GPIO device list during lookup would never work - we always could end up re-taking a reference to an object that was being released if it got looked up between when the last reference is dropped and the object is finally removed from the device list.
v1 -> v2:
- add patch 1/3 to fix a release timing issue
Bartosz Golaszewski (3):
gpiolib: remove the GPIO device from the list when it's unregistered
gpiolib: replace the GPIO device mutex with a read-write semaphore
gpiolib: pin GPIO devices in place during descriptor lookup
drivers/gpio/gpiolib-sysfs.c | 2 +- drivers/gpio/gpiolib.c | 62 ++++++++++++++++++++---------------- drivers/gpio/gpiolib.h | 2 +- 3 files changed, 36 insertions(+), 30 deletions(-)
Signature · 1 line
2.40.1