Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

init: mark __user address space on string literals

When calling syscall service routines in kernel, some of arguments should
be user pointers but were missing __user markup on string literals. Add
it. Removes some sparse warnings.

Signed-off-by: Namhyung Kim <namhyung@gmail.com>
Cc: Phillip Lougher <phillip@lougher.demon.co.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Namhyung Kim and committed by
Linus Torvalds
562f5e63 f0cfec11

+11 -10
+2 -2
init/do_mounts.c
··· 291 291 if (err) 292 292 return err; 293 293 294 - sys_chdir("/root"); 294 + sys_chdir((const char __user __force *)"/root"); 295 295 ROOT_DEV = current->fs->pwd.mnt->mnt_sb->s_dev; 296 296 printk("VFS: Mounted root (%s filesystem)%s on device %u:%u.\n", 297 297 current->fs->pwd.mnt->mnt_sb->s_type->name, ··· 488 488 out: 489 489 devtmpfs_mount("dev"); 490 490 sys_mount(".", "/", NULL, MS_MOVE, NULL); 491 - sys_chroot("."); 491 + sys_chroot((const char __user __force *)"."); 492 492 }
+1 -1
init/do_mounts_md.c
··· 283 283 284 284 wait_for_device_probe(); 285 285 286 - fd = sys_open("/dev/md0", 0, 0); 286 + fd = sys_open((const char __user __force *) "/dev/md0", 0, 0); 287 287 if (fd >= 0) { 288 288 sys_ioctl(fd, RAID_AUTORUN, raid_autopart); 289 289 sys_close(fd);
+2 -2
init/do_mounts_rd.c
··· 168 168 char rotator[4] = { '|' , '/' , '-' , '\\' }; 169 169 #endif 170 170 171 - out_fd = sys_open("/dev/ram", O_RDWR, 0); 171 + out_fd = sys_open((const char __user __force *) "/dev/ram", O_RDWR, 0); 172 172 if (out_fd < 0) 173 173 goto out; 174 174 ··· 267 267 sys_close(out_fd); 268 268 out: 269 269 kfree(buf); 270 - sys_unlink("/dev/ram"); 270 + sys_unlink((const char __user __force *) "/dev/ram"); 271 271 return res; 272 272 } 273 273
+3 -2
init/initramfs.c
··· 528 528 struct linux_dirent64 *dirp; 529 529 int num; 530 530 531 - fd = sys_open("/", O_RDONLY, 0); 531 + fd = sys_open((const char __user __force *) "/", O_RDONLY, 0); 532 532 WARN_ON(fd < 0); 533 533 if (fd < 0) 534 534 return; ··· 590 590 } 591 591 printk(KERN_INFO "rootfs image is not initramfs (%s)" 592 592 "; looks like an initrd\n", err); 593 - fd = sys_open("/initrd.image", O_WRONLY|O_CREAT, 0700); 593 + fd = sys_open((const char __user __force *) "/initrd.image", 594 + O_WRONLY|O_CREAT, 0700); 594 595 if (fd >= 0) { 595 596 sys_write(fd, (char *)initrd_start, 596 597 initrd_end - initrd_start);
+3 -3
init/noinitramfs.c
··· 29 29 { 30 30 int err; 31 31 32 - err = sys_mkdir("/dev", 0755); 32 + err = sys_mkdir((const char __user __force *) "/dev", 0755); 33 33 if (err < 0) 34 34 goto out; 35 35 36 - err = sys_mknod((const char __user *) "/dev/console", 36 + err = sys_mknod((const char __user __force *) "/dev/console", 37 37 S_IFCHR | S_IRUSR | S_IWUSR, 38 38 new_encode_dev(MKDEV(5, 1))); 39 39 if (err < 0) 40 40 goto out; 41 41 42 - err = sys_mkdir("/root", 0700); 42 + err = sys_mkdir((const char __user __force *) "/root", 0700); 43 43 if (err < 0) 44 44 goto out; 45 45