* [linux-next:master 3689/8126] fs/xattr.c:692 __do_sys_setxattrat() warn: comparison of a potentially tagged address (__do_sys_setxattrat, 5, usize)
@ 2024-09-01 1:27 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-09-01 1:27 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: "Christian Göttsche" <cgzones@googlemail.com>
CC: Christian Brauner <brauner@kernel.org>
CC: Arnd Bergmann <arnd@arndb.de>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 985bf40edf4343dcb04c33f58b40b4a85c1776d4
commit: 6a7fb6ebe3718ca5f56468b163ff82c65bdf7b7f [3689/8126] fs/xattr: add *at family syscalls
:::::: branch date: 2 days ago
:::::: commit date: 3 weeks ago
config: arm64-randconfig-r071-20240901 (https://download.01.org/0day-ci/archive/20240901/202409010924.1NBtrsYA-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.1.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202409010924.1NBtrsYA-lkp@intel.com/
smatch warnings:
fs/xattr.c:692 __do_sys_setxattrat() warn: comparison of a potentially tagged address (__do_sys_setxattrat, 5, usize)
fs/xattr.c:692 __do_sys_setxattrat() warn: comparison of a potentially tagged address (__do_sys_setxattrat, 5, usize)
fs/xattr.c:849 __do_sys_getxattrat() warn: comparison of a potentially tagged address (__do_sys_getxattrat, 5, usize)
fs/xattr.c:849 __do_sys_getxattrat() warn: comparison of a potentially tagged address (__do_sys_getxattrat, 5, usize)
vim +692 fs/xattr.c
^1da177e4c3f41 Linus Torvalds 2005-04-16 679
6a7fb6ebe3718c Christian Göttsche 2024-04-26 680 SYSCALL_DEFINE6(setxattrat, int, dfd, const char __user *, pathname, unsigned int, at_flags,
6a7fb6ebe3718c Christian Göttsche 2024-04-26 681 const char __user *, name, const struct xattr_args __user *, uargs,
6a7fb6ebe3718c Christian Göttsche 2024-04-26 682 size_t, usize)
6a7fb6ebe3718c Christian Göttsche 2024-04-26 683 {
6a7fb6ebe3718c Christian Göttsche 2024-04-26 684 struct xattr_args args = {};
6a7fb6ebe3718c Christian Göttsche 2024-04-26 685 int error;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 686
6a7fb6ebe3718c Christian Göttsche 2024-04-26 687 BUILD_BUG_ON(sizeof(struct xattr_args) < XATTR_ARGS_SIZE_VER0);
6a7fb6ebe3718c Christian Göttsche 2024-04-26 688 BUILD_BUG_ON(sizeof(struct xattr_args) != XATTR_ARGS_SIZE_LATEST);
6a7fb6ebe3718c Christian Göttsche 2024-04-26 689
6a7fb6ebe3718c Christian Göttsche 2024-04-26 690 if (unlikely(usize < XATTR_ARGS_SIZE_VER0))
6a7fb6ebe3718c Christian Göttsche 2024-04-26 691 return -EINVAL;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 @692 if (usize > PAGE_SIZE)
6a7fb6ebe3718c Christian Göttsche 2024-04-26 693 return -E2BIG;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 694
6a7fb6ebe3718c Christian Göttsche 2024-04-26 695 error = copy_struct_from_user(&args, sizeof(args), uargs, usize);
6a7fb6ebe3718c Christian Göttsche 2024-04-26 696 if (error)
6a7fb6ebe3718c Christian Göttsche 2024-04-26 697 return error;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 698
6a7fb6ebe3718c Christian Göttsche 2024-04-26 699 return path_setxattrat(dfd, pathname, at_flags, name,
6a7fb6ebe3718c Christian Göttsche 2024-04-26 700 u64_to_user_ptr(args.value), args.size,
6a7fb6ebe3718c Christian Göttsche 2024-04-26 701 args.flags);
6a7fb6ebe3718c Christian Göttsche 2024-04-26 702 }
6a7fb6ebe3718c Christian Göttsche 2024-04-26 703
8cc431165d8fbd Eric Biggers 2014-10-12 704 SYSCALL_DEFINE5(setxattr, const char __user *, pathname,
64fd1de3d82165 Heiko Carstens 2009-01-14 705 const char __user *, name, const void __user *, value,
64fd1de3d82165 Heiko Carstens 2009-01-14 706 size_t, size, int, flags)
^1da177e4c3f41 Linus Torvalds 2005-04-16 707 {
6a7fb6ebe3718c Christian Göttsche 2024-04-26 708 return path_setxattrat(AT_FDCWD, pathname, 0, name, value, size, flags);
18f335aff86913 Dave Hansen 2008-02-15 709 }
8cc431165d8fbd Eric Biggers 2014-10-12 710
8cc431165d8fbd Eric Biggers 2014-10-12 711 SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname,
8cc431165d8fbd Eric Biggers 2014-10-12 712 const char __user *, name, const void __user *, value,
8cc431165d8fbd Eric Biggers 2014-10-12 713 size_t, size, int, flags)
8cc431165d8fbd Eric Biggers 2014-10-12 714 {
6a7fb6ebe3718c Christian Göttsche 2024-04-26 715 return path_setxattrat(AT_FDCWD, pathname, AT_SYMLINK_NOFOLLOW, name,
6a7fb6ebe3718c Christian Göttsche 2024-04-26 716 value, size, flags);
^1da177e4c3f41 Linus Torvalds 2005-04-16 717 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 718
64fd1de3d82165 Heiko Carstens 2009-01-14 719 SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
64fd1de3d82165 Heiko Carstens 2009-01-14 720 const void __user *,value, size_t, size, int, flags)
^1da177e4c3f41 Linus Torvalds 2005-04-16 721 {
c3a5e3e872f368 David Howells 2024-07-23 722 struct xattr_name kname;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 723 struct kernel_xattr_ctx ctx = {
c3a5e3e872f368 David Howells 2024-07-23 724 .cvalue = value,
c3a5e3e872f368 David Howells 2024-07-23 725 .kvalue = NULL,
c3a5e3e872f368 David Howells 2024-07-23 726 .size = size,
c3a5e3e872f368 David Howells 2024-07-23 727 .kname = &kname,
c3a5e3e872f368 David Howells 2024-07-23 728 .flags = flags,
c3a5e3e872f368 David Howells 2024-07-23 729 };
c3a5e3e872f368 David Howells 2024-07-23 730 int error;
^1da177e4c3f41 Linus Torvalds 2005-04-16 731
c3a5e3e872f368 David Howells 2024-07-23 732 CLASS(fd, f)(fd);
2903ff019b346a Al Viro 2012-08-28 733 if (!f.file)
c3a5e3e872f368 David Howells 2024-07-23 734 return -EBADF;
c3a5e3e872f368 David Howells 2024-07-23 735
9f45f5bf302daa Al Viro 2014-10-31 736 audit_file(f.file);
c3a5e3e872f368 David Howells 2024-07-23 737 error = setxattr_copy(name, &ctx);
c3a5e3e872f368 David Howells 2024-07-23 738 if (error)
c3a5e3e872f368 David Howells 2024-07-23 739 return error;
c3a5e3e872f368 David Howells 2024-07-23 740
6742cee0435323 Miklos Szeredi 2018-07-18 741 error = mnt_want_write_file(f.file);
18f335aff86913 Dave Hansen 2008-02-15 742 if (!error) {
c3a5e3e872f368 David Howells 2024-07-23 743 error = do_setxattr(file_mnt_idmap(f.file),
c3a5e3e872f368 David Howells 2024-07-23 744 f.file->f_path.dentry, &ctx);
6742cee0435323 Miklos Szeredi 2018-07-18 745 mnt_drop_write_file(f.file);
18f335aff86913 Dave Hansen 2008-02-15 746 }
c3a5e3e872f368 David Howells 2024-07-23 747 kvfree(ctx.kvalue);
^1da177e4c3f41 Linus Torvalds 2005-04-16 748 return error;
^1da177e4c3f41 Linus Torvalds 2005-04-16 749 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 750
^1da177e4c3f41 Linus Torvalds 2005-04-16 751 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 752 * Extended attribute GET operations
^1da177e4c3f41 Linus Torvalds 2005-04-16 753 */
c975cad9315700 Stefan Roesch 2022-04-24 754 ssize_t
5a6f52d20ce3cd Christian Brauner 2022-10-28 755 do_getxattr(struct mnt_idmap *idmap, struct dentry *d,
53566cca34de34 Christian Göttsche 2024-04-26 756 struct kernel_xattr_ctx *ctx)
^1da177e4c3f41 Linus Torvalds 2005-04-16 757 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 758 ssize_t error;
c975cad9315700 Stefan Roesch 2022-04-24 759 char *kname = ctx->kname->name;
^1da177e4c3f41 Linus Torvalds 2005-04-16 760
c975cad9315700 Stefan Roesch 2022-04-24 761 if (ctx->size) {
c975cad9315700 Stefan Roesch 2022-04-24 762 if (ctx->size > XATTR_SIZE_MAX)
c975cad9315700 Stefan Roesch 2022-04-24 763 ctx->size = XATTR_SIZE_MAX;
c975cad9315700 Stefan Roesch 2022-04-24 764 ctx->kvalue = kvzalloc(ctx->size, GFP_KERNEL);
c975cad9315700 Stefan Roesch 2022-04-24 765 if (!ctx->kvalue)
^1da177e4c3f41 Linus Torvalds 2005-04-16 766 return -ENOMEM;
779302e67835fe Sasha Levin 2012-07-30 767 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 768
318e66856ddec0 Christian Brauner 2022-09-22 769 if (is_posix_acl_xattr(ctx->kname->name))
5a6f52d20ce3cd Christian Brauner 2022-10-28 770 error = do_get_acl(idmap, d, kname, ctx->kvalue, ctx->size);
318e66856ddec0 Christian Brauner 2022-09-22 771 else
4609e1f18e19c3 Christian Brauner 2023-01-13 772 error = vfs_getxattr(idmap, d, kname, ctx->kvalue, ctx->size);
^1da177e4c3f41 Linus Torvalds 2005-04-16 773 if (error > 0) {
c975cad9315700 Stefan Roesch 2022-04-24 774 if (ctx->size && copy_to_user(ctx->value, ctx->kvalue, error))
^1da177e4c3f41 Linus Torvalds 2005-04-16 775 error = -EFAULT;
c975cad9315700 Stefan Roesch 2022-04-24 776 } else if (error == -ERANGE && ctx->size >= XATTR_SIZE_MAX) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 777 /* The file system tried to returned a value bigger
^1da177e4c3f41 Linus Torvalds 2005-04-16 778 than XATTR_SIZE_MAX bytes. Not possible. */
^1da177e4c3f41 Linus Torvalds 2005-04-16 779 error = -E2BIG;
^1da177e4c3f41 Linus Torvalds 2005-04-16 780 }
0b2a6f231dcbc7 Richard Weinberger 2016-01-02 781
c975cad9315700 Stefan Roesch 2022-04-24 782 return error;
c975cad9315700 Stefan Roesch 2022-04-24 783 }
0b2a6f231dcbc7 Richard Weinberger 2016-01-02 784
c975cad9315700 Stefan Roesch 2022-04-24 785 static ssize_t
5a6f52d20ce3cd Christian Brauner 2022-10-28 786 getxattr(struct mnt_idmap *idmap, struct dentry *d,
c975cad9315700 Stefan Roesch 2022-04-24 787 const char __user *name, void __user *value, size_t size)
c975cad9315700 Stefan Roesch 2022-04-24 788 {
c975cad9315700 Stefan Roesch 2022-04-24 789 ssize_t error;
c975cad9315700 Stefan Roesch 2022-04-24 790 struct xattr_name kname;
53566cca34de34 Christian Göttsche 2024-04-26 791 struct kernel_xattr_ctx ctx = {
c975cad9315700 Stefan Roesch 2022-04-24 792 .value = value,
c975cad9315700 Stefan Roesch 2022-04-24 793 .kvalue = NULL,
c975cad9315700 Stefan Roesch 2022-04-24 794 .size = size,
c975cad9315700 Stefan Roesch 2022-04-24 795 .kname = &kname,
c975cad9315700 Stefan Roesch 2022-04-24 796 .flags = 0,
c975cad9315700 Stefan Roesch 2022-04-24 797 };
c975cad9315700 Stefan Roesch 2022-04-24 798
c975cad9315700 Stefan Roesch 2022-04-24 799 error = strncpy_from_user(kname.name, name, sizeof(kname.name));
c975cad9315700 Stefan Roesch 2022-04-24 800 if (error == 0 || error == sizeof(kname.name))
c975cad9315700 Stefan Roesch 2022-04-24 801 error = -ERANGE;
c975cad9315700 Stefan Roesch 2022-04-24 802 if (error < 0)
c975cad9315700 Stefan Roesch 2022-04-24 803 return error;
c975cad9315700 Stefan Roesch 2022-04-24 804
5a6f52d20ce3cd Christian Brauner 2022-10-28 805 error = do_getxattr(idmap, d, &ctx);
c975cad9315700 Stefan Roesch 2022-04-24 806
c975cad9315700 Stefan Roesch 2022-04-24 807 kvfree(ctx.kvalue);
^1da177e4c3f41 Linus Torvalds 2005-04-16 808 return error;
^1da177e4c3f41 Linus Torvalds 2005-04-16 809 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 810
6a7fb6ebe3718c Christian Göttsche 2024-04-26 811 static ssize_t path_getxattrat(int dfd, const char __user *pathname,
6a7fb6ebe3718c Christian Göttsche 2024-04-26 812 unsigned int at_flags, const char __user *name,
6a7fb6ebe3718c Christian Göttsche 2024-04-26 813 void __user *value, size_t size)
^1da177e4c3f41 Linus Torvalds 2005-04-16 814 {
2d8f30380ab8c7 Al Viro 2008-07-22 815 struct path path;
^1da177e4c3f41 Linus Torvalds 2005-04-16 816 ssize_t error;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 817 int lookup_flags;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 818
6a7fb6ebe3718c Christian Göttsche 2024-04-26 819 if ((at_flags & ~(AT_SYMLINK_NOFOLLOW | AT_EMPTY_PATH)) != 0)
6a7fb6ebe3718c Christian Göttsche 2024-04-26 820 return -EINVAL;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 821
6a7fb6ebe3718c Christian Göttsche 2024-04-26 822 lookup_flags = (at_flags & AT_SYMLINK_NOFOLLOW) ? 0 : LOOKUP_FOLLOW;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 823 if (at_flags & AT_EMPTY_PATH)
6a7fb6ebe3718c Christian Göttsche 2024-04-26 824 lookup_flags |= LOOKUP_EMPTY;
60e66b48ca2081 Jeff Layton 2012-12-11 825 retry:
6a7fb6ebe3718c Christian Göttsche 2024-04-26 826 error = user_path_at(dfd, pathname, lookup_flags, &path);
^1da177e4c3f41 Linus Torvalds 2005-04-16 827 if (error)
^1da177e4c3f41 Linus Torvalds 2005-04-16 828 return error;
5a6f52d20ce3cd Christian Brauner 2022-10-28 829 error = getxattr(mnt_idmap(path.mnt), path.dentry, name, value, size);
2d8f30380ab8c7 Al Viro 2008-07-22 830 path_put(&path);
60e66b48ca2081 Jeff Layton 2012-12-11 831 if (retry_estale(error, lookup_flags)) {
60e66b48ca2081 Jeff Layton 2012-12-11 832 lookup_flags |= LOOKUP_REVAL;
60e66b48ca2081 Jeff Layton 2012-12-11 833 goto retry;
60e66b48ca2081 Jeff Layton 2012-12-11 834 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 835 return error;
^1da177e4c3f41 Linus Torvalds 2005-04-16 836 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 837
6a7fb6ebe3718c Christian Göttsche 2024-04-26 838 SYSCALL_DEFINE6(getxattrat, int, dfd, const char __user *, pathname, unsigned int, at_flags,
6a7fb6ebe3718c Christian Göttsche 2024-04-26 839 const char __user *, name, struct xattr_args __user *, uargs, size_t, usize)
6a7fb6ebe3718c Christian Göttsche 2024-04-26 840 {
6a7fb6ebe3718c Christian Göttsche 2024-04-26 841 struct xattr_args args = {};
6a7fb6ebe3718c Christian Göttsche 2024-04-26 842 int error;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 843
6a7fb6ebe3718c Christian Göttsche 2024-04-26 844 BUILD_BUG_ON(sizeof(struct xattr_args) < XATTR_ARGS_SIZE_VER0);
6a7fb6ebe3718c Christian Göttsche 2024-04-26 845 BUILD_BUG_ON(sizeof(struct xattr_args) != XATTR_ARGS_SIZE_LATEST);
6a7fb6ebe3718c Christian Göttsche 2024-04-26 846
6a7fb6ebe3718c Christian Göttsche 2024-04-26 847 if (unlikely(usize < XATTR_ARGS_SIZE_VER0))
6a7fb6ebe3718c Christian Göttsche 2024-04-26 848 return -EINVAL;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 @849 if (usize > PAGE_SIZE)
6a7fb6ebe3718c Christian Göttsche 2024-04-26 850 return -E2BIG;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 851
6a7fb6ebe3718c Christian Göttsche 2024-04-26 852 error = copy_struct_from_user(&args, sizeof(args), uargs, usize);
6a7fb6ebe3718c Christian Göttsche 2024-04-26 853 if (error)
6a7fb6ebe3718c Christian Göttsche 2024-04-26 854 return error;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 855
6a7fb6ebe3718c Christian Göttsche 2024-04-26 856 if (args.flags != 0)
6a7fb6ebe3718c Christian Göttsche 2024-04-26 857 return -EINVAL;
6a7fb6ebe3718c Christian Göttsche 2024-04-26 858
6a7fb6ebe3718c Christian Göttsche 2024-04-26 859 return path_getxattrat(dfd, pathname, at_flags, name,
6a7fb6ebe3718c Christian Göttsche 2024-04-26 860 u64_to_user_ptr(args.value), args.size);
6a7fb6ebe3718c Christian Göttsche 2024-04-26 861 }
6a7fb6ebe3718c Christian Göttsche 2024-04-26 862
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-09-01 1:27 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-01 1:27 [linux-next:master 3689/8126] fs/xattr.c:692 __do_sys_setxattrat() warn: comparison of a potentially tagged address (__do_sys_setxattrat, 5, usize) kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.