浏览代码

md: remove sparse warnings about lock context.

There was a real error here on a failure path where we
incorrectly call rcu_read_unlock.


Signed-off-by: NeilBrown <neilb@suse.de>
NeilBrown 16 年之前
父节点
当前提交
ee305acef5
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      drivers/md/bitmap.c

+ 4 - 1
drivers/md/bitmap.c

@@ -108,6 +108,8 @@ static void bitmap_free_page(struct bitmap *bitmap, unsigned char *page)
  * allocated while we're using it
  * allocated while we're using it
  */
  */
 static int bitmap_checkpage(struct bitmap *bitmap, unsigned long page, int create)
 static int bitmap_checkpage(struct bitmap *bitmap, unsigned long page, int create)
+__releases(bitmap->lock)
+__acquires(bitmap->lock)
 {
 {
 	unsigned char *mappage;
 	unsigned char *mappage;
 
 
@@ -325,7 +327,6 @@ static int write_sb_page(struct bitmap *bitmap, struct page *page, int wait)
 	return 0;
 	return 0;
 
 
  bad_alignment:
  bad_alignment:
-	rcu_read_unlock();
 	return -EINVAL;
 	return -EINVAL;
 }
 }
 
 
@@ -1207,6 +1208,8 @@ void bitmap_daemon_work(struct bitmap *bitmap)
 static bitmap_counter_t *bitmap_get_counter(struct bitmap *bitmap,
 static bitmap_counter_t *bitmap_get_counter(struct bitmap *bitmap,
 					    sector_t offset, int *blocks,
 					    sector_t offset, int *blocks,
 					    int create)
 					    int create)
+__releases(bitmap->lock)
+__acquires(bitmap->lock)
 {
 {
 	/* If 'create', we might release the lock and reclaim it.
 	/* If 'create', we might release the lock and reclaim it.
 	 * The lock must have been taken with interrupts enabled.
 	 * The lock must have been taken with interrupts enabled.