Page MenuHomeFreeBSD

dwmmc: refine locking in dwmmc_card_task()
AbandonedPublic

Authored by mhorne on Feb 4 2025, 8:25 PM.
Tags
None
Referenced Files
F154327957: D48851.id.diff
Mon, Apr 27, 9:13 PM
Unknown Object (File)
Sun, Apr 26, 8:25 AM
Unknown Object (File)
Fri, Apr 24, 9:59 PM
Unknown Object (File)
Tue, Apr 21, 9:27 PM
Unknown Object (File)
Tue, Apr 21, 2:05 PM
Unknown Object (File)
Tue, Apr 21, 9:53 AM
Unknown Object (File)
Tue, Apr 21, 1:10 AM
Unknown Object (File)
Mon, Apr 20, 3:48 PM
Subscribers
None

Details

Reviewers
imp
manu
Summary

It is invalid to call device_add_child() while holding the driver's
mutex. This was previously of no consequence, but a recent change
to device array allocation (f3d3c63442ff) switched the logic to use
M_WAITOK. Now, a LOR warning is printed when the card is inserted.

Fix this by reducing the scope of the device lock in the helper function
to:

  1. Reading device state (card & child device presence)
  2. Updating device state (after child added/before removed)

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 62261
Build 59145: arc lint + arc unit