@@ -1937,12 +1937,16 @@ static int cmp_dpa(const void *a, const void *b)
1937
1937
static struct device * * scan_labels (struct nd_region * nd_region )
1938
1938
{
1939
1939
int i , count = 0 ;
1940
- struct device * dev , * * devs = NULL ;
1940
+ struct device * dev , * * devs ;
1941
1941
struct nd_label_ent * label_ent , * e ;
1942
1942
struct nd_mapping * nd_mapping = & nd_region -> mapping [0 ];
1943
1943
struct nvdimm_drvdata * ndd = to_ndd (nd_mapping );
1944
1944
resource_size_t map_end = nd_mapping -> start + nd_mapping -> size - 1 ;
1945
1945
1946
+ devs = kcalloc (2 , sizeof (dev ), GFP_KERNEL );
1947
+ if (!devs )
1948
+ return NULL ;
1949
+
1946
1950
/* "safe" because create_namespace_pmem() might list_move() label_ent */
1947
1951
list_for_each_entry_safe (label_ent , e , & nd_mapping -> labels , list ) {
1948
1952
struct nd_namespace_label * nd_label = label_ent -> label ;
@@ -1961,12 +1965,14 @@ static struct device **scan_labels(struct nd_region *nd_region)
1961
1965
goto err ;
1962
1966
if (i < count )
1963
1967
continue ;
1964
- __devs = kcalloc (count + 2 , sizeof (dev ), GFP_KERNEL );
1965
- if (!__devs )
1966
- goto err ;
1967
- memcpy (__devs , devs , sizeof (dev ) * count );
1968
- kfree (devs );
1969
- devs = __devs ;
1968
+ if (count ) {
1969
+ __devs = kcalloc (count + 2 , sizeof (dev ), GFP_KERNEL );
1970
+ if (!__devs )
1971
+ goto err ;
1972
+ memcpy (__devs , devs , sizeof (dev ) * count );
1973
+ kfree (devs );
1974
+ devs = __devs ;
1975
+ }
1970
1976
1971
1977
dev = create_namespace_pmem (nd_region , nd_mapping , nd_label );
1972
1978
if (IS_ERR (dev )) {
@@ -1993,11 +1999,6 @@ static struct device **scan_labels(struct nd_region *nd_region)
1993
1999
1994
2000
/* Publish a zero-sized namespace for userspace to configure. */
1995
2001
nd_mapping_free_labels (nd_mapping );
1996
-
1997
- devs = kcalloc (2 , sizeof (dev ), GFP_KERNEL );
1998
- if (!devs )
1999
- goto err ;
2000
-
2001
2002
nspm = kzalloc (sizeof (* nspm ), GFP_KERNEL );
2002
2003
if (!nspm )
2003
2004
goto err ;
@@ -2036,11 +2037,10 @@ static struct device **scan_labels(struct nd_region *nd_region)
2036
2037
return devs ;
2037
2038
2038
2039
err :
2039
- if (devs ) {
2040
- for (i = 0 ; devs [i ]; i ++ )
2041
- namespace_pmem_release (devs [i ]);
2042
- kfree (devs );
2043
- }
2040
+ for (i = 0 ; devs [i ]; i ++ )
2041
+ namespace_pmem_release (devs [i ]);
2042
+ kfree (devs );
2043
+
2044
2044
return NULL ;
2045
2045
}
2046
2046
0 commit comments