dm bufio: check result of register_shrinker()
authorAliaksei Karaliou <akaraliou.dev@gmail.com>
Sat, 23 Dec 2017 10:27:04 +0000 (13:27 +0300)
committerMike Snitzer <snitzer@redhat.com>
Wed, 17 Jan 2018 14:16:03 +0000 (09:16 -0500)
dm_bufio_client_create() does not check result of register_shrinker()
which was tagged as __must_check recently, reported by sparse.

Signed-off-by: Aliaksei Karaliou <akaraliou.dev@gmail.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-bufio.c

index 1d130130f26429160d81d52c0422f7e16062f365..b98c72fa73221de7f169c4df2384e4646ac4a799 100644 (file)
@@ -1743,20 +1743,23 @@ struct dm_bufio_client *dm_bufio_client_create(struct block_device *bdev, unsign
                __free_buffer_wake(b);
        }
 
+       c->shrinker.count_objects = dm_bufio_shrink_count;
+       c->shrinker.scan_objects = dm_bufio_shrink_scan;
+       c->shrinker.seeks = 1;
+       c->shrinker.batch = 0;
+       r = register_shrinker(&c->shrinker);
+       if (r)
+               goto bad_shrinker;
+
        mutex_lock(&dm_bufio_clients_lock);
        dm_bufio_client_count++;
        list_add(&c->client_list, &dm_bufio_all_clients);
        __cache_size_refresh();
        mutex_unlock(&dm_bufio_clients_lock);
 
-       c->shrinker.count_objects = dm_bufio_shrink_count;
-       c->shrinker.scan_objects = dm_bufio_shrink_scan;
-       c->shrinker.seeks = 1;
-       c->shrinker.batch = 0;
-       register_shrinker(&c->shrinker);
-
        return c;
 
+bad_shrinker:
 bad_buffer:
 bad_cache:
        while (!list_empty(&c->reserved_buffers)) {