nfsd: Always lock state exclusively.
It used to be the case that state had an rwlock that was locked for write by downgrades, but for read for upgrades (opens). Well, the problem is if there are two competing opens for the same state, they step on each other toes potentially leading to leaking file descriptors from the state structure, since access mode is a bitmap only set once. Signed-off-by: Oleg Drokin <green@linuxhacker.ru> Cc: stable@vger.kernel.org Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:

committed by
J. Bruce Fields

parent
39a9beab5a
commit
feb9dad520
@@ -535,7 +535,7 @@ struct nfs4_ol_stateid {
|
||||
unsigned char st_access_bmap;
|
||||
unsigned char st_deny_bmap;
|
||||
struct nfs4_ol_stateid *st_openstp;
|
||||
struct rw_semaphore st_rwsem;
|
||||
struct mutex st_mutex;
|
||||
};
|
||||
|
||||
static inline struct nfs4_ol_stateid *openlockstateid(struct nfs4_stid *s)
|
||||
|
Reference in New Issue
Block a user