diff mbox series

[2/2] quota: wire up quotactl_path

Message ID 20210211153024.32502-3-s.hauer@pengutronix.de (mailing list archive)
State New, archived
Headers show
Series quota: Add mountpath based quota support | expand

Commit Message

Sascha Hauer Feb. 11, 2021, 3:30 p.m. UTC
Wire up the quotactl_path syscall added in the previous patch.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 arch/alpha/kernel/syscalls/syscall.tbl      | 1 +
 arch/arm/tools/syscall.tbl                  | 1 +
 arch/arm64/include/asm/unistd.h             | 2 +-
 arch/arm64/include/asm/unistd32.h           | 2 ++
 arch/ia64/kernel/syscalls/syscall.tbl       | 1 +
 arch/m68k/kernel/syscalls/syscall.tbl       | 1 +
 arch/microblaze/kernel/syscalls/syscall.tbl | 1 +
 arch/mips/kernel/syscalls/syscall_n32.tbl   | 1 +
 arch/mips/kernel/syscalls/syscall_n64.tbl   | 1 +
 arch/mips/kernel/syscalls/syscall_o32.tbl   | 1 +
 arch/parisc/kernel/syscalls/syscall.tbl     | 1 +
 arch/powerpc/kernel/syscalls/syscall.tbl    | 1 +
 arch/s390/kernel/syscalls/syscall.tbl       | 1 +
 arch/sh/kernel/syscalls/syscall.tbl         | 1 +
 arch/sparc/kernel/syscalls/syscall.tbl      | 1 +
 arch/x86/entry/syscalls/syscall_32.tbl      | 1 +
 arch/x86/entry/syscalls/syscall_64.tbl      | 1 +
 arch/xtensa/kernel/syscalls/syscall.tbl     | 1 +
 include/linux/syscalls.h                    | 2 ++
 include/uapi/asm-generic/unistd.h           | 4 +++-
 kernel/sys_ni.c                             | 1 +
 21 files changed, 25 insertions(+), 2 deletions(-)

Comments

Christoph Hellwig Feb. 11, 2021, 3:38 p.m. UTC | #1
Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>
kernel test robot Feb. 11, 2021, 7:56 p.m. UTC | #2
Hi Sascha,

I love your patch! Perhaps something to improve:

[auto build test WARNING on arm64/for-next/core]
[also build test WARNING on tip/x86/asm m68k/for-next hp-parisc/for-next powerpc/next s390/features linus/master v5.11-rc7]
[cannot apply to sparc-next/master sparc/master xtensa/for_next next-20210211]
[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]

url:    https://github.com/0day-ci/linux/commits/Sascha-Hauer/quota-Add-mountpath-based-quota-support/20210211-233912
base:   https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
config: x86_64-randconfig-a013-20210209 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project c9439ca36342fb6013187d0a69aef92736951476)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/0fa8489f958d6ec34215930a8d1a2d4b6644fea3
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Sascha-Hauer/quota-Add-mountpath-based-quota-support/20210211-233912
        git checkout 0fa8489f958d6ec34215930a8d1a2d4b6644fea3
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

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

All warnings (new ones prefixed by >>):

   In file included from arch/x86/entry/syscall_32.c:13:
   ./arch/x86/include/generated/asm/syscalls_32.h:830:18: error: expected parameter declarator
   __SYSCALL_COMMON(442, sys_quotactl_path)
                    ^
   ./arch/x86/include/generated/asm/syscalls_32.h:830:18: error: expected ')'
   ./arch/x86/include/generated/asm/syscalls_32.h:830:17: note: to match this '('
   __SYSCALL_COMMON(442, sys_quotactl_path)
                   ^
>> ./arch/x86/include/generated/asm/syscalls_32.h:830:1: warning: declaration specifier missing, defaulting to 'int'
   __SYSCALL_COMMON(442, sys_quotactl_path)
   ^
   int
   ./arch/x86/include/generated/asm/syscalls_32.h:830:17: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
   __SYSCALL_COMMON(442, sys_quotactl_path)
                   ^
                                          void
   ./arch/x86/include/generated/asm/syscalls_32.h:830:41: error: expected ';' after top level declarator
   __SYSCALL_COMMON(442, sys_quotactl_path)
                                           ^
                                           ;
   In file included from arch/x86/entry/syscall_32.c:24:
   ./arch/x86/include/generated/asm/syscalls_32.h:830:23: error: use of undeclared identifier 'sys_quotactl_path'
   __SYSCALL_COMMON(442, sys_quotactl_path)
                         ^
   1 warning and 5 errors generated.
--
   kernel/sys_ni.c:88:1: warning: no previous prototype for function '__x64_sys_flock' [-Wmissing-prototypes]
   COND_SYSCALL(flock);
   ^
   arch/x86/include/asm/syscall_wrapper.h:256:2: note: expanded from macro 'COND_SYSCALL'
           __X64_COND_SYSCALL(name)                                        \
           ^
   arch/x86/include/asm/syscall_wrapper.h:100:2: note: expanded from macro '__X64_COND_SYSCALL'
           __COND_SYSCALL(x64, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:14: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                       ^
   <scratch space>:225:1: note: expanded from here
   __x64_sys_flock
   ^
   kernel/sys_ni.c:88:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   arch/x86/include/asm/syscall_wrapper.h:256:2: note: expanded from macro 'COND_SYSCALL'
           __X64_COND_SYSCALL(name)                                        \
           ^
   arch/x86/include/asm/syscall_wrapper.h:100:2: note: expanded from macro '__X64_COND_SYSCALL'
           __COND_SYSCALL(x64, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:9: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                  ^
   kernel/sys_ni.c:88:1: warning: no previous prototype for function '__ia32_sys_flock' [-Wmissing-prototypes]
   COND_SYSCALL(flock);
   ^
   arch/x86/include/asm/syscall_wrapper.h:257:2: note: expanded from macro 'COND_SYSCALL'
           __IA32_COND_SYSCALL(name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:120:2: note: expanded from macro '__IA32_COND_SYSCALL'
           __COND_SYSCALL(ia32, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:14: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                       ^
   <scratch space>:229:1: note: expanded from here
   __ia32_sys_flock
   ^
   kernel/sys_ni.c:88:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   arch/x86/include/asm/syscall_wrapper.h:257:2: note: expanded from macro 'COND_SYSCALL'
           __IA32_COND_SYSCALL(name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:120:2: note: expanded from macro '__IA32_COND_SYSCALL'
           __COND_SYSCALL(ia32, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:9: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                  ^
   kernel/sys_ni.c:101:1: warning: no previous prototype for function '__x64_sys_quotactl' [-Wmissing-prototypes]
   COND_SYSCALL(quotactl);
   ^
   arch/x86/include/asm/syscall_wrapper.h:256:2: note: expanded from macro 'COND_SYSCALL'
           __X64_COND_SYSCALL(name)                                        \
           ^
   arch/x86/include/asm/syscall_wrapper.h:100:2: note: expanded from macro '__X64_COND_SYSCALL'
           __COND_SYSCALL(x64, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:14: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                       ^
   <scratch space>:233:1: note: expanded from here
   __x64_sys_quotactl
   ^
   kernel/sys_ni.c:101:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   arch/x86/include/asm/syscall_wrapper.h:256:2: note: expanded from macro 'COND_SYSCALL'
           __X64_COND_SYSCALL(name)                                        \
           ^
   arch/x86/include/asm/syscall_wrapper.h:100:2: note: expanded from macro '__X64_COND_SYSCALL'
           __COND_SYSCALL(x64, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:9: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                  ^
   kernel/sys_ni.c:101:1: warning: no previous prototype for function '__ia32_sys_quotactl' [-Wmissing-prototypes]
   COND_SYSCALL(quotactl);
   ^
   arch/x86/include/asm/syscall_wrapper.h:257:2: note: expanded from macro 'COND_SYSCALL'
           __IA32_COND_SYSCALL(name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:120:2: note: expanded from macro '__IA32_COND_SYSCALL'
           __COND_SYSCALL(ia32, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:14: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                       ^
   <scratch space>:237:1: note: expanded from here
   __ia32_sys_quotactl
   ^
   kernel/sys_ni.c:101:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   arch/x86/include/asm/syscall_wrapper.h:257:2: note: expanded from macro 'COND_SYSCALL'
           __IA32_COND_SYSCALL(name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:120:2: note: expanded from macro '__IA32_COND_SYSCALL'
           __COND_SYSCALL(ia32, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:9: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                  ^
>> kernel/sys_ni.c:102:1: warning: no previous prototype for function '__x64_sys_quotactl_path' [-Wmissing-prototypes]
   COND_SYSCALL(quotactl_path);
   ^
   arch/x86/include/asm/syscall_wrapper.h:256:2: note: expanded from macro 'COND_SYSCALL'
           __X64_COND_SYSCALL(name)                                        \
           ^
   arch/x86/include/asm/syscall_wrapper.h:100:2: note: expanded from macro '__X64_COND_SYSCALL'
           __COND_SYSCALL(x64, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:14: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                       ^
   <scratch space>:241:1: note: expanded from here
   __x64_sys_quotactl_path
   ^
   kernel/sys_ni.c:102:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   arch/x86/include/asm/syscall_wrapper.h:256:2: note: expanded from macro 'COND_SYSCALL'
           __X64_COND_SYSCALL(name)                                        \
           ^
   arch/x86/include/asm/syscall_wrapper.h:100:2: note: expanded from macro '__X64_COND_SYSCALL'
           __COND_SYSCALL(x64, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:9: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                  ^
>> kernel/sys_ni.c:102:1: warning: no previous prototype for function '__ia32_sys_quotactl_path' [-Wmissing-prototypes]
   COND_SYSCALL(quotactl_path);
   ^
   arch/x86/include/asm/syscall_wrapper.h:257:2: note: expanded from macro 'COND_SYSCALL'
           __IA32_COND_SYSCALL(name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:120:2: note: expanded from macro '__IA32_COND_SYSCALL'
           __COND_SYSCALL(ia32, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:14: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                       ^
   <scratch space>:245:1: note: expanded from here
   __ia32_sys_quotactl_path
   ^
   kernel/sys_ni.c:102:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   arch/x86/include/asm/syscall_wrapper.h:257:2: note: expanded from macro 'COND_SYSCALL'
           __IA32_COND_SYSCALL(name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:120:2: note: expanded from macro '__IA32_COND_SYSCALL'
           __COND_SYSCALL(ia32, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:9: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                  ^
   kernel/sys_ni.c:113:1: warning: no previous prototype for function '__x64_sys_signalfd4' [-Wmissing-prototypes]
   COND_SYSCALL(signalfd4);
   ^
   arch/x86/include/asm/syscall_wrapper.h:256:2: note: expanded from macro 'COND_SYSCALL'
           __X64_COND_SYSCALL(name)                                        \
           ^
   arch/x86/include/asm/syscall_wrapper.h:100:2: note: expanded from macro '__X64_COND_SYSCALL'
           __COND_SYSCALL(x64, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:14: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                       ^
   <scratch space>:249:1: note: expanded from here
   __x64_sys_signalfd4
   ^
   kernel/sys_ni.c:113:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   arch/x86/include/asm/syscall_wrapper.h:256:2: note: expanded from macro 'COND_SYSCALL'
           __X64_COND_SYSCALL(name)                                        \
           ^
   arch/x86/include/asm/syscall_wrapper.h:100:2: note: expanded from macro '__X64_COND_SYSCALL'
           __COND_SYSCALL(x64, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:9: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                  ^
   kernel/sys_ni.c:113:1: warning: no previous prototype for function '__ia32_sys_signalfd4' [-Wmissing-prototypes]
   COND_SYSCALL(signalfd4);
   ^
   arch/x86/include/asm/syscall_wrapper.h:257:2: note: expanded from macro 'COND_SYSCALL'
           __IA32_COND_SYSCALL(name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:120:2: note: expanded from macro '__IA32_COND_SYSCALL'
           __COND_SYSCALL(ia32, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:14: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                       ^
   <scratch space>:253:1: note: expanded from here
   __ia32_sys_signalfd4
   ^
   kernel/sys_ni.c:113:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   arch/x86/include/asm/syscall_wrapper.h:257:2: note: expanded from macro 'COND_SYSCALL'
           __IA32_COND_SYSCALL(name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:120:2: note: expanded from macro '__IA32_COND_SYSCALL'
           __COND_SYSCALL(ia32, sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:9: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                  ^
   kernel/sys_ni.c:114:1: warning: no previous prototype for function '__ia32_compat_sys_signalfd4' [-Wmissing-prototypes]
   COND_SYSCALL_COMPAT(signalfd4);
   ^
   arch/x86/include/asm/syscall_wrapper.h:218:2: note: expanded from macro 'COND_SYSCALL_COMPAT'
           __IA32_COMPAT_COND_SYSCALL(name)                                \
           ^
   arch/x86/include/asm/syscall_wrapper.h:148:2: note: expanded from macro '__IA32_COMPAT_COND_SYSCALL'
           __COND_SYSCALL(ia32, compat_sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:14: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                       ^
   <scratch space>:257:1: note: expanded from here
   __ia32_compat_sys_signalfd4
   ^
   kernel/sys_ni.c:114:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   arch/x86/include/asm/syscall_wrapper.h:218:2: note: expanded from macro 'COND_SYSCALL_COMPAT'
           __IA32_COMPAT_COND_SYSCALL(name)                                \
           ^
   arch/x86/include/asm/syscall_wrapper.h:148:2: note: expanded from macro '__IA32_COMPAT_COND_SYSCALL'
           __COND_SYSCALL(ia32, compat_sys_##name)
           ^
   arch/x86/include/asm/syscall_wrapper.h:83:9: note: expanded from macro '__COND_SYSCALL'
           __weak long __##abi##_##name(const struct pt_regs *__unused)    \
                  ^
   kernel/sys_ni.c:123:1: warning: no previous prototype for function '__x64_sys_timerfd_create' [-Wmissing-prototypes]


vim +/__x64_sys_quotactl_path +102 kernel/sys_ni.c

    99	
   100	/* fs/quota.c */
   101	COND_SYSCALL(quotactl);
 > 102	COND_SYSCALL(quotactl_path);
   103	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
kernel test robot Feb. 12, 2021, 12:10 a.m. UTC | #3
Hi Sascha,

I love your patch! Yet something to improve:

[auto build test ERROR on arm64/for-next/core]
[also build test ERROR on tip/x86/asm m68k/for-next hp-parisc/for-next powerpc/next s390/features linus/master v5.11-rc7]
[cannot apply to sparc-next/master sparc/master xtensa/for_next next-20210211]
[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]

url:    https://github.com/0day-ci/linux/commits/Sascha-Hauer/quota-Add-mountpath-based-quota-support/20210211-233912
base:   https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
config: x86_64-randconfig-a013-20210209 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project c9439ca36342fb6013187d0a69aef92736951476)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/0fa8489f958d6ec34215930a8d1a2d4b6644fea3
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Sascha-Hauer/quota-Add-mountpath-based-quota-support/20210211-233912
        git checkout 0fa8489f958d6ec34215930a8d1a2d4b6644fea3
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

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

All errors (new ones prefixed by >>):

   In file included from arch/x86/entry/syscall_32.c:13:
>> ./arch/x86/include/generated/asm/syscalls_32.h:830:18: error: expected parameter declarator
   __SYSCALL_COMMON(442, sys_quotactl_path)
                    ^
>> ./arch/x86/include/generated/asm/syscalls_32.h:830:18: error: expected ')'
   ./arch/x86/include/generated/asm/syscalls_32.h:830:17: note: to match this '('
   __SYSCALL_COMMON(442, sys_quotactl_path)
                   ^
   ./arch/x86/include/generated/asm/syscalls_32.h:830:1: warning: declaration specifier missing, defaulting to 'int'
   __SYSCALL_COMMON(442, sys_quotactl_path)
   ^
   int
>> ./arch/x86/include/generated/asm/syscalls_32.h:830:17: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
   __SYSCALL_COMMON(442, sys_quotactl_path)
                   ^
                                          void
>> ./arch/x86/include/generated/asm/syscalls_32.h:830:41: error: expected ';' after top level declarator
   __SYSCALL_COMMON(442, sys_quotactl_path)
                                           ^
                                           ;
   In file included from arch/x86/entry/syscall_32.c:24:
>> ./arch/x86/include/generated/asm/syscalls_32.h:830:23: error: use of undeclared identifier 'sys_quotactl_path'
   __SYSCALL_COMMON(442, sys_quotactl_path)
                         ^
   1 warning and 5 errors generated.

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff mbox series

Patch

diff --git a/arch/alpha/kernel/syscalls/syscall.tbl b/arch/alpha/kernel/syscalls/syscall.tbl
index a6617067dbe6..3fe90880c821 100644
--- a/arch/alpha/kernel/syscalls/syscall.tbl
+++ b/arch/alpha/kernel/syscalls/syscall.tbl
@@ -481,3 +481,4 @@ 
 549	common	faccessat2			sys_faccessat2
 550	common	process_madvise			sys_process_madvise
 551	common	epoll_pwait2			sys_epoll_pwait2
+552	common	quotactl_path			sys_quotactl_path
diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl
index 20e1170e2e0a..a62509df217f 100644
--- a/arch/arm/tools/syscall.tbl
+++ b/arch/arm/tools/syscall.tbl
@@ -455,3 +455,4 @@ 
 439	common	faccessat2			sys_faccessat2
 440	common	process_madvise			sys_process_madvise
 441	common	epoll_pwait2			sys_epoll_pwait2
+442	common	quotactl_path			sys_quotactl_path
diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h
index 86a9d7b3eabe..949788f5ba40 100644
--- a/arch/arm64/include/asm/unistd.h
+++ b/arch/arm64/include/asm/unistd.h
@@ -38,7 +38,7 @@ 
 #define __ARM_NR_compat_set_tls		(__ARM_NR_COMPAT_BASE + 5)
 #define __ARM_NR_COMPAT_END		(__ARM_NR_COMPAT_BASE + 0x800)
 
-#define __NR_compat_syscalls		442
+#define __NR_compat_syscalls		443
 #endif
 
 #define __ARCH_WANT_SYS_CLONE
diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h
index cccfbbefbf95..734c254ca1b6 100644
--- a/arch/arm64/include/asm/unistd32.h
+++ b/arch/arm64/include/asm/unistd32.h
@@ -891,6 +891,8 @@  __SYSCALL(__NR_faccessat2, sys_faccessat2)
 __SYSCALL(__NR_process_madvise, sys_process_madvise)
 #define __NR_epoll_pwait2 441
 __SYSCALL(__NR_epoll_pwait2, compat_sys_epoll_pwait2)
+#define __NR_quotactl_path 442
+__SYSCALL(__NR_quotactl_path, sys_quotactl_path)
 
 /*
  * Please add new compat syscalls above this comment and update
diff --git a/arch/ia64/kernel/syscalls/syscall.tbl b/arch/ia64/kernel/syscalls/syscall.tbl
index bfc00f2bd437..4758a22a4d80 100644
--- a/arch/ia64/kernel/syscalls/syscall.tbl
+++ b/arch/ia64/kernel/syscalls/syscall.tbl
@@ -362,3 +362,4 @@ 
 439	common	faccessat2			sys_faccessat2
 440	common	process_madvise			sys_process_madvise
 441	common	epoll_pwait2			sys_epoll_pwait2
+442	common	quotactl_path			sys_quotactl_path
diff --git a/arch/m68k/kernel/syscalls/syscall.tbl b/arch/m68k/kernel/syscalls/syscall.tbl
index 7fe4e45c864c..b9072d2f1fdc 100644
--- a/arch/m68k/kernel/syscalls/syscall.tbl
+++ b/arch/m68k/kernel/syscalls/syscall.tbl
@@ -441,3 +441,4 @@ 
 439	common	faccessat2			sys_faccessat2
 440	common	process_madvise			sys_process_madvise
 441	common	epoll_pwait2			sys_epoll_pwait2
+442	common	quotactl_path			sys_quotactl_path
diff --git a/arch/microblaze/kernel/syscalls/syscall.tbl b/arch/microblaze/kernel/syscalls/syscall.tbl
index a522adf194ab..95e0cb59e8c1 100644
--- a/arch/microblaze/kernel/syscalls/syscall.tbl
+++ b/arch/microblaze/kernel/syscalls/syscall.tbl
@@ -447,3 +447,4 @@ 
 439	common	faccessat2			sys_faccessat2
 440	common	process_madvise			sys_process_madvise
 441	common	epoll_pwait2			sys_epoll_pwait2
+442	common	quotactl_path			sys_quotactl_path
diff --git a/arch/mips/kernel/syscalls/syscall_n32.tbl b/arch/mips/kernel/syscalls/syscall_n32.tbl
index 0f03ad223f33..027fe0351e66 100644
--- a/arch/mips/kernel/syscalls/syscall_n32.tbl
+++ b/arch/mips/kernel/syscalls/syscall_n32.tbl
@@ -380,3 +380,4 @@ 
 439	n32	faccessat2			sys_faccessat2
 440	n32	process_madvise			sys_process_madvise
 441	n32	epoll_pwait2			compat_sys_epoll_pwait2
+442	n32	quotactl_path			sys_quotactl_path
diff --git a/arch/mips/kernel/syscalls/syscall_n64.tbl b/arch/mips/kernel/syscalls/syscall_n64.tbl
index 91649690b52f..f4bddccab043 100644
--- a/arch/mips/kernel/syscalls/syscall_n64.tbl
+++ b/arch/mips/kernel/syscalls/syscall_n64.tbl
@@ -356,3 +356,4 @@ 
 439	n64	faccessat2			sys_faccessat2
 440	n64	process_madvise			sys_process_madvise
 441	n64	epoll_pwait2			sys_epoll_pwait2
+442	n64	quotactl_path			sys_quotactl_path
diff --git a/arch/mips/kernel/syscalls/syscall_o32.tbl b/arch/mips/kernel/syscalls/syscall_o32.tbl
index 4bad0c40aed6..bc2f3ad1de87 100644
--- a/arch/mips/kernel/syscalls/syscall_o32.tbl
+++ b/arch/mips/kernel/syscalls/syscall_o32.tbl
@@ -429,3 +429,4 @@ 
 439	o32	faccessat2			sys_faccessat2
 440	o32	process_madvise			sys_process_madvise
 441	o32	epoll_pwait2			sys_epoll_pwait2		compat_sys_epoll_pwait2
+442	o32	quotactl_path			sys_quotactl_path
diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl
index 6bcc31966b44..80a4b6dbae77 100644
--- a/arch/parisc/kernel/syscalls/syscall.tbl
+++ b/arch/parisc/kernel/syscalls/syscall.tbl
@@ -439,3 +439,4 @@ 
 439	common	faccessat2			sys_faccessat2
 440	common	process_madvise			sys_process_madvise
 441	common	epoll_pwait2			sys_epoll_pwait2		compat_sys_epoll_pwait2
+442	common	quotactl_path			sys_quotactl_path
diff --git a/arch/powerpc/kernel/syscalls/syscall.tbl b/arch/powerpc/kernel/syscalls/syscall.tbl
index f744eb5cba88..29a706828330 100644
--- a/arch/powerpc/kernel/syscalls/syscall.tbl
+++ b/arch/powerpc/kernel/syscalls/syscall.tbl
@@ -531,3 +531,4 @@ 
 439	common	faccessat2			sys_faccessat2
 440	common	process_madvise			sys_process_madvise
 441	common	epoll_pwait2			sys_epoll_pwait2		compat_sys_epoll_pwait2
+442	common	quotactl_path			sys_quotactl_path
diff --git a/arch/s390/kernel/syscalls/syscall.tbl b/arch/s390/kernel/syscalls/syscall.tbl
index d443423495e5..6ed53d992736 100644
--- a/arch/s390/kernel/syscalls/syscall.tbl
+++ b/arch/s390/kernel/syscalls/syscall.tbl
@@ -444,3 +444,4 @@ 
 439  common	faccessat2		sys_faccessat2			sys_faccessat2
 440  common	process_madvise		sys_process_madvise		sys_process_madvise
 441  common	epoll_pwait2		sys_epoll_pwait2		compat_sys_epoll_pwait2
+442  common	quotactl_path		sys_quotactl_path
diff --git a/arch/sh/kernel/syscalls/syscall.tbl b/arch/sh/kernel/syscalls/syscall.tbl
index 9df40ac0ebc0..f8488ad641b6 100644
--- a/arch/sh/kernel/syscalls/syscall.tbl
+++ b/arch/sh/kernel/syscalls/syscall.tbl
@@ -444,3 +444,4 @@ 
 439	common	faccessat2			sys_faccessat2
 440	common	process_madvise			sys_process_madvise
 441	common	epoll_pwait2			sys_epoll_pwait2
+442	common	quotactl_path			sys_quotactl_path
diff --git a/arch/sparc/kernel/syscalls/syscall.tbl b/arch/sparc/kernel/syscalls/syscall.tbl
index 40d8c7cd8298..211d7269246b 100644
--- a/arch/sparc/kernel/syscalls/syscall.tbl
+++ b/arch/sparc/kernel/syscalls/syscall.tbl
@@ -487,3 +487,4 @@ 
 439	common	faccessat2			sys_faccessat2
 440	common	process_madvise			sys_process_madvise
 441	common	epoll_pwait2			sys_epoll_pwait2		compat_sys_epoll_pwait2
+442	common	quotactl_path			sys_quotactl_path
diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl
index 874aeacde2dd..deb7650cfc88 100644
--- a/arch/x86/entry/syscalls/syscall_32.tbl
+++ b/arch/x86/entry/syscalls/syscall_32.tbl
@@ -446,3 +446,4 @@ 
 439	i386	faccessat2		sys_faccessat2
 440	i386	process_madvise		sys_process_madvise
 441	i386	epoll_pwait2		sys_epoll_pwait2		compat_sys_epoll_pwait2
+442	common	quotactl_path		sys_quotactl_path
diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl
index 78672124d28b..cdbfb67852e6 100644
--- a/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/arch/x86/entry/syscalls/syscall_64.tbl
@@ -363,6 +363,7 @@ 
 439	common	faccessat2		sys_faccessat2
 440	common	process_madvise		sys_process_madvise
 441	common	epoll_pwait2		sys_epoll_pwait2
+442	common	quotactl_path		sys_quotactl_path
 
 #
 # Due to a historical design error, certain syscalls are numbered differently
diff --git a/arch/xtensa/kernel/syscalls/syscall.tbl b/arch/xtensa/kernel/syscalls/syscall.tbl
index 46116a28eeed..b434eda5653a 100644
--- a/arch/xtensa/kernel/syscalls/syscall.tbl
+++ b/arch/xtensa/kernel/syscalls/syscall.tbl
@@ -412,3 +412,4 @@ 
 439	common	faccessat2			sys_faccessat2
 440	common	process_madvise			sys_process_madvise
 441	common	epoll_pwait2			sys_epoll_pwait2
+442	common	quotactl_path			sys_quotactl_path
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 7688bc983de5..2e1bf7c2165f 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -482,6 +482,8 @@  asmlinkage long sys_pipe2(int __user *fildes, int flags);
 /* fs/quota.c */
 asmlinkage long sys_quotactl(unsigned int cmd, const char __user *special,
 				qid_t id, void __user *addr);
+asmlinkage long sys_quotactl_path(unsigned int cmd, const char __user *mountpoint,
+				  qid_t id, void __user *addr);
 
 /* fs/readdir.c */
 asmlinkage long sys_getdents64(unsigned int fd,
diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
index 728752917785..dad876b86488 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -861,9 +861,11 @@  __SYSCALL(__NR_faccessat2, sys_faccessat2)
 __SYSCALL(__NR_process_madvise, sys_process_madvise)
 #define __NR_epoll_pwait2 441
 __SC_COMP(__NR_epoll_pwait2, sys_epoll_pwait2, compat_sys_epoll_pwait2)
+#define __NR_quotactl_path 442
+__SYSCALL(__NR_quotactl_path, sys_quotactl_path)
 
 #undef __NR_syscalls
-#define __NR_syscalls 442
+#define __NR_syscalls 443
 
 /*
  * 32 bit systems traditionally used different
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
index 19aa806890d5..d24431782414 100644
--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -99,6 +99,7 @@  COND_SYSCALL(flock);
 
 /* fs/quota.c */
 COND_SYSCALL(quotactl);
+COND_SYSCALL(quotactl_path);
 
 /* fs/readdir.c */