Re: [PATCH] efivarfs: fix NULL-deref on mount when no efivars

From: Johan Hovold
Date: Fri Feb 24 2023 - 03:02:32 EST


On Thu, Feb 23, 2023 at 05:03:54PM +0800, kernel test robot wrote:
> Hi Johan,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on v6.2-rc5]
> [also build test ERROR on linus/master]
> [cannot apply to efi/next next-20230223]

I have no idea what your robot is trying to do here, but this patch has
been folded into 301de9a20553 ("efivarfs: always register filesystem")
and is already in linux-next building just fine.

> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Johan-Hovold/efivarfs-fix-NULL-deref-on-mount-when-no-efivars/20230128-094525
> patch link: https://lore.kernel.org/r/20230126112129.4602-1-johan%2Blinaro%40kernel.org
> patch subject: [PATCH] efivarfs: fix NULL-deref on mount when no efivars
> config: x86_64-randconfig-a011 (https://download.01.org/0day-ci/archive/20230223/202302231642.tyrVwZMY-lkp@xxxxxxxxx/config)
> compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
> reproduce (this is a W=1 build):
> # https://github.com/intel-lab-lkp/linux/commit/da57163cc9d947884520240ec71c2806f48b8a64
> git remote add linux-review https://github.com/intel-lab-lkp/linux
> git fetch --no-tags linux-review Johan-Hovold/efivarfs-fix-NULL-deref-on-mount-when-no-efivars/20230128-094525
> git checkout da57163cc9d947884520240ec71c2806f48b8a64
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> make W=1 O=build_dir ARCH=x86_64 olddefconfig
> make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash fs/
>
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> | Link: https://lore.kernel.org/oe-kbuild-all/202302231642.tyrVwZMY-lkp@xxxxxxxxx/
>
> All errors (new ones prefixed by >>):
>
> fs/efivarfs/super.c: In function 'efivarfs_kill_sb':
> >> fs/efivarfs/super.c:246:14: error: implicit declaration of function 'efivar_is_available'; did you mean 'slab_is_available'? [-Werror=implicit-function-declaration]
> 246 | if (!efivar_is_available())
> | ^~~~~~~~~~~~~~~~~~~
> | slab_is_available
> cc1: some warnings being treated as errors
>
>
> vim +246 fs/efivarfs/super.c
>
> 241
> 242 static void efivarfs_kill_sb(struct super_block *sb)
> 243 {
> 244 kill_litter_super(sb);
> 245
> > 246 if (!efivar_is_available())
> 247 return;
> 248
> 249 /* Remove all entries and destroy */
> 250 efivar_entry_iter(efivarfs_destroy, &efivarfs_list, NULL);
> 251 }
> 252

Johan