diff mbox series

mm: check the function kmalloc_slab return value

Message ID 20220613102438.27723-1-renyu@nfschina.com (mailing list archive)
State New
Headers show
Series mm: check the function kmalloc_slab return value | expand

Commit Message

Ren Yu June 13, 2022, 10:24 a.m. UTC
As the possible failure of the kmalloc_slab,
it should be better to check it.

Signed-off-by: Ren Yu <renyu@nfschina.com>
---
 mm/slab.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

kernel test robot June 13, 2022, 1:37 p.m. UTC | #1
Hi Ren,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on akpm-mm/mm-everything]

url:    https://github.com/intel-lab-lkp/linux/commits/Ren-Yu/mm-check-the-function-kmalloc_slab-return-value/20220613-182849
base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
config: um-i386_defconfig (https://download.01.org/0day-ci/archive/20220613/202206132134.VtqdhH9v-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/5ba2024be9e85177c986e9078e903798cac72f74
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Ren-Yu/mm-check-the-function-kmalloc_slab-return-value/20220613-182849
        git checkout 5ba2024be9e85177c986e9078e903798cac72f74
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=um SUBARCH=i386 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   mm/slab.c: In function '__kmem_cache_create':
>> mm/slab.c:2068:38: warning: returning 'struct kmem_cache *' from a function with return type 'int' makes integer from pointer without a cast [-Wint-conversion]
    2068 |                         return cachep->freelist_cache;
         |                                ~~~~~~^~~~~~~~~~~~~~~~


vim +2068 mm/slab.c

  2063	
  2064		if (OFF_SLAB(cachep)) {
  2065			cachep->freelist_cache =
  2066				kmalloc_slab(cachep->freelist_size, 0u);
  2067			if (unlikely(ZERO_OR_NULL_PTR(cachep->freelist_cache)))
> 2068				return cachep->freelist_cache;
  2069		}
  2070	
  2071		err = setup_cpu_cache(cachep, gfp);
  2072		if (err) {
  2073			__kmem_cache_release(cachep);
  2074			return err;
  2075		}
  2076	
  2077		return 0;
  2078	}
  2079
diff mbox series

Patch

diff --git a/mm/slab.c b/mm/slab.c
index f8cd00f4ba13..72135e555827 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -2064,6 +2064,8 @@  int __kmem_cache_create(struct kmem_cache *cachep, slab_flags_t flags)
 	if (OFF_SLAB(cachep)) {
 		cachep->freelist_cache =
 			kmalloc_slab(cachep->freelist_size, 0u);
+		if (unlikely(ZERO_OR_NULL_PTR(cachep->freelist_cache)))
+			return cachep->freelist_cache;
 	}
 
 	err = setup_cpu_cache(cachep, gfp);