leases: fix write-open/read-lease race
authorJ. Bruce Fields <bfields@redhat.com>
Wed, 21 Sep 2011 14:58:13 +0000 (10:58 -0400)
committerroot <root@serles.lst.de>
Fri, 28 Oct 2011 12:59:00 +0000 (14:59 +0200)
commitf3c7691e8d30d88899b514675c7c86d19057b5fd
tree0065bcc05b19a99d8785ce523f992a48fe573e79
parent79835a710d6ff811659c8de46f89c7577c3b8cc6
leases: fix write-open/read-lease race

In setlease, we use i_writecount to decide whether we can give out a
read lease.

In open, we break leases before incrementing i_writecount.

There is therefore a window between the break lease and the i_writecount
increment when setlease could add a new read lease.

This would leave us with a simultaneous write open and read lease, which
shouldn't happen.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
fs/namei.c
fs/open.c