Quoting Timothy R. Chavez (tinytim(a)us.ibm.com):
* I've completely removed the audit_master_watchlist_lock
spinlock to protect
the master watchlist, in favor of RCU locking. ?To protect against concurrent
watch removals from the master watchlist, we conveniently use the local
data->lock rw_lock in place of another spinlock. ?Thus, only one removal can
I have a problem with this. Isn't the audit_master_watchlist a global
list? Are you sure you can use a per-inode lock to protect this global
list?
I think you'll need to reintroduce the audit_master_watchlist_lock
spinlock, and use only in audit_destroy_wentry().
This is based on a quick read, and I can't say I have a complete picture
of your structures right now, so I could be wrong... but conceptually I
don't see how you can protect the global list with an
inode->inode_data->rw_lock.
Mind you, this list does seem like an excellent RCU candidate, so it's a
good switch to make.
-serge