security/landlock/syscalls.c:150:1: sparse: sparse: Using plain integer as NULL pointer

From: kernel test robot
Date: Sat Jun 04 2022 - 05:46:35 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 032dcf09e2bf7c822be25b4abef7a6c913870d98
commit: 265885daf3e5082eb9f6e2a23bdbf9ba4456a21b landlock: Add syscall implementations
date: 1 year, 1 month ago
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20220604/202206041737.hvLpbdsq-lkp@xxxxxxxxx/config)
compiler: s390-linux-gcc (GCC) 11.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-18-g56afb504-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=265885daf3e5082eb9f6e2a23bdbf9ba4456a21b
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 265885daf3e5082eb9f6e2a23bdbf9ba4456a21b
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=s390 SHELL=/bin/bash drivers/s390/scsi/ kernel/ security/landlock/

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


sparse warnings: (new ones prefixed by >>)
>> security/landlock/syscalls.c:150:1: sparse: sparse: Using plain integer as NULL pointer
>> security/landlock/syscalls.c:150:1: sparse: sparse: Using plain integer as NULL pointer
security/landlock/syscalls.c:295:1: sparse: sparse: Using plain integer as NULL pointer
security/landlock/syscalls.c:295:1: sparse: sparse: Using plain integer as NULL pointer

vim +150 security/landlock/syscalls.c

130
131 /**
132 * sys_landlock_create_ruleset - Create a new ruleset
133 *
134 * @attr: Pointer to a &struct landlock_ruleset_attr identifying the scope of
135 * the new ruleset.
136 * @size: Size of the pointed &struct landlock_ruleset_attr (needed for
137 * backward and forward compatibility).
138 * @flags: Must be 0.
139 *
140 * This system call enables to create a new Landlock ruleset, and returns the
141 * related file descriptor on success.
142 *
143 * Possible returned errors are:
144 *
145 * - EOPNOTSUPP: Landlock is supported by the kernel but disabled at boot time;
146 * - EINVAL: @flags is not 0, or unknown access, or too small @size;
147 * - E2BIG or EFAULT: @attr or @size inconsistencies;
148 * - ENOMSG: empty &landlock_ruleset_attr.handled_access_fs.
149 */
> 150 SYSCALL_DEFINE3(landlock_create_ruleset,
151 const struct landlock_ruleset_attr __user *const, attr,
152 const size_t, size, const __u32, flags)
153 {
154 struct landlock_ruleset_attr ruleset_attr;
155 struct landlock_ruleset *ruleset;
156 int err, ruleset_fd;
157
158 /* Build-time checks. */
159 build_check_abi();
160
161 if (!landlock_initialized)
162 return -EOPNOTSUPP;
163
164 /* No flag for now. */
165 if (flags)
166 return -EINVAL;
167
168 /* Copies raw user space buffer. */
169 err = copy_min_struct_from_user(&ruleset_attr, sizeof(ruleset_attr),
170 offsetofend(typeof(ruleset_attr), handled_access_fs),
171 attr, size);
172 if (err)
173 return err;
174
175 /* Checks content (and 32-bits cast). */
176 if ((ruleset_attr.handled_access_fs | LANDLOCK_MASK_ACCESS_FS) !=
177 LANDLOCK_MASK_ACCESS_FS)
178 return -EINVAL;
179
180 /* Checks arguments and transforms to kernel struct. */
181 ruleset = landlock_create_ruleset(ruleset_attr.handled_access_fs);
182 if (IS_ERR(ruleset))
183 return PTR_ERR(ruleset);
184
185 /* Creates anonymous FD referring to the ruleset. */
186 ruleset_fd = anon_inode_getfd("landlock-ruleset", &ruleset_fops,
187 ruleset, O_RDWR | O_CLOEXEC);
188 if (ruleset_fd < 0)
189 landlock_put_ruleset(ruleset);
190 return ruleset_fd;
191 }
192

--
0-DAY CI Kernel Test Service
https://01.org/lkp