summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Samy <f.fallen45@gmail.com>2016-04-17 05:37:09 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-05-04 14:48:59 -0700
commit50abecbc50f8e3af5ef384f58183d89fcef6f5d1 (patch)
treece248c09e6d8b18b0fafea5eb3c7a71d06470998
parentbe5fb2757b1855f55e05e6970d2808ac280ceddd (diff)
downloadlinux-stable-50abecbc50f8e3af5ef384f58183d89fcef6f5d1.tar.gz
linux-stable-50abecbc50f8e3af5ef384f58183d89fcef6f5d1.tar.bz2
linux-stable-50abecbc50f8e3af5ef384f58183d89fcef6f5d1.zip
dm cache metadata: fix cmd_read_lock() acquiring write lock
commit 6545b60baaf880b0cd29a5e89dbe745a06027e89 upstream. Commit 9567366fefdd ("dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros") uses down_write() instead of down_read() in cmd_read_lock(), yet up_read() is used to release the lock in READ_UNLOCK(). Fix it. Fixes: 9567366fefdd ("dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros") Signed-off-by: Ahmed Samy <f.fallen45@gmail.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/md/dm-cache-metadata.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/md/dm-cache-metadata.c b/drivers/md/dm-cache-metadata.c
index 65ce6985f87a..3970cda10080 100644
--- a/drivers/md/dm-cache-metadata.c
+++ b/drivers/md/dm-cache-metadata.c
@@ -894,9 +894,9 @@ static bool cmd_write_lock(struct dm_cache_metadata *cmd)
static bool cmd_read_lock(struct dm_cache_metadata *cmd)
{
- down_write(&cmd->root_lock);
+ down_read(&cmd->root_lock);
if (cmd->fail_io) {
- up_write(&cmd->root_lock);
+ up_read(&cmd->root_lock);
return false;
}
return true;