From: Jeff Layton Date: Wed, 30 Apr 2014 13:31:47 +0000 (-0400) Subject: cifs: fix potential races in cifs_revalidate_mapping X-Git-Tag: omap-for-v3.16/fixes-against-rc1~74^2~9 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f73c7d342d57d065bdbc0995cb56d8d1701b0c0;p=pandora-kernel.git cifs: fix potential races in cifs_revalidate_mapping The handling of the CIFS_INO_INVALID_MAPPING flag is racy. It's possible for two tasks to attempt to revalidate the mapping at the same time. The first sees that CIFS_INO_INVALID_MAPPING is set. It clears the flag and then calls invalidate_inode_pages2 to start shooting down the pagecache. While that's going on, another task checks the flag and sees that it's clear. It then ends up trusting the pagecache to satisfy a read when it shouldn't. Fix this by adding a bitlock to ensure that the clearing of the flag is atomic with respect to the actual cache invalidation. Also, move the other existing users of cifs_invalidate_mapping to use a new cifs_zap_mapping() function that just sets the INVALID_MAPPING bit and then uses the standard codepath to handle the invalidation. Signed-off-by: Jeff Layton Signed-off-by: Steve French --- Reading git-diff-tree failed