@@ -1869,11 +1869,12 @@ static int cache_alloc(struct cache_sb *sb, struct cache *ca)
1869
1869
return 0 ;
1870
1870
}
1871
1871
1872
- static void register_cache (struct cache_sb * sb , struct page * sb_page ,
1872
+ static int register_cache (struct cache_sb * sb , struct page * sb_page ,
1873
1873
struct block_device * bdev , struct cache * ca )
1874
1874
{
1875
1875
char name [BDEVNAME_SIZE ];
1876
- const char * err = "cannot allocate memory" ;
1876
+ const char * err = NULL ;
1877
+ int ret = 0 ;
1877
1878
1878
1879
memcpy (& ca -> sb , sb , sizeof (struct cache_sb ));
1879
1880
ca -> bdev = bdev ;
@@ -1888,27 +1889,35 @@ static void register_cache(struct cache_sb *sb, struct page *sb_page,
1888
1889
if (blk_queue_discard (bdev_get_queue (ca -> bdev )))
1889
1890
ca -> discard = CACHE_DISCARD (& ca -> sb );
1890
1891
1891
- if (cache_alloc (sb , ca ) != 0 )
1892
+ ret = cache_alloc (sb , ca );
1893
+ if (ret != 0 )
1892
1894
goto err ;
1893
1895
1894
- err = "error creating kobject" ;
1895
- if (kobject_add (& ca -> kobj , & part_to_dev (bdev -> bd_part )-> kobj , "bcache" ))
1896
- goto err ;
1896
+ if (kobject_add (& ca -> kobj , & part_to_dev (bdev -> bd_part )-> kobj , "bcache" )) {
1897
+ err = "error calling kobject_add" ;
1898
+ ret = - ENOMEM ;
1899
+ goto out ;
1900
+ }
1897
1901
1898
1902
mutex_lock (& bch_register_lock );
1899
1903
err = register_cache_set (ca );
1900
1904
mutex_unlock (& bch_register_lock );
1901
1905
1902
- if (err )
1903
- goto err ;
1906
+ if (err ) {
1907
+ ret = - ENODEV ;
1908
+ goto out ;
1909
+ }
1904
1910
1905
1911
pr_info ("registered cache device %s" , bdevname (bdev , name ));
1912
+
1906
1913
out :
1907
1914
kobject_put (& ca -> kobj );
1908
- return ;
1915
+
1909
1916
err :
1910
- pr_notice ("error opening %s: %s" , bdevname (bdev , name ), err );
1911
- goto out ;
1917
+ if (err )
1918
+ pr_notice ("error opening %s: %s" , bdevname (bdev , name ), err );
1919
+
1920
+ return ret ;
1912
1921
}
1913
1922
1914
1923
/* Global interfaces/init */
@@ -2006,7 +2015,8 @@ static ssize_t register_bcache(struct kobject *k, struct kobj_attribute *attr,
2006
2015
if (!ca )
2007
2016
goto err_close ;
2008
2017
2009
- register_cache (sb , sb_page , bdev , ca );
2018
+ if (register_cache (sb , sb_page , bdev , ca ) != 0 )
2019
+ goto err_close ;
2010
2020
}
2011
2021
out :
2012
2022
if (sb_page )
0 commit comments