Re: [PATCH] remove BKL from drivers' release functions

Rick Lindsley
2001-12-01T10:07:22Z

This is why we have a development tree. Its moving things in the
right direction which is important. I suspect many drivers will
want to use semaphores rather than atomic counts however, to ensure
that an open doesn't complete while a previous release is still
shutting down hardware

Yes, the only successful application for atomic counts that I've seen
(in this context) is for exclusive open code that looks like

if (count++) {
count--;
return -EBUSY;
}

in the open routine and

count--;

in the release. If you want to do anything else as a result of that
count, you'll need additional locking because it could have changed a
nanosecond after it was (safely) incremented or decremented. You can't
count on it remaining that value after you check it.

release()s that want to shutdown the device, free memory, or take other
actions will want to employ either a spinlock (plain or r/w as
appropriate) or a sleeping semaphore to insure things remain stable
until those actions are complete.

Rick