Loading Documentation/filesystems/overlayfs.txt +23 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,29 @@ Only the lists of names from directories are merged. Other content such as metadata and extended attributes are reported for the upper directory only. These attributes of the lower directory are hidden. credentials ----------- By default, all access to the upper, lower and work directories is the recorded mounter's MAC and DAC credentials. The incoming accesses are checked against the caller's credentials. In the case where caller MAC or DAC credentials do not overlap, a use case available in older versions of the driver, the override_creds mount flag can be turned off and help when the use pattern has caller with legitimate credentials where the mounter does not. Several unintended side effects will occur though. The caller without certain key capabilities or lower privilege will not always be able to delete files or directories, create nodes, or search some restricted directories. The ability to search and read a directory entry is spotty as a result of the cache mechanism not retesting the credentials because of the assumption, a privileged caller can fill cache, then a lower privilege can read the directory cache. The uneven security model where cache, upperdir and workdir are opened at privilege, but accessed without creating a form of privilege escalation, should only be used with strict understanding of the side effects and of the security policies. whiteouts and opaque directories -------------------------------- Loading Makefile +1 −1 Original line number Diff line number Diff line VERSION = 4 PATCHLEVEL = 4 SUBLEVEL = 176 SUBLEVEL = 177 EXTRAVERSION = NAME = Blurry Fish Butt Loading arch/arc/include/asm/bitops.h +3 −3 Original line number Diff line number Diff line Loading @@ -286,7 +286,7 @@ static inline __attribute__ ((const)) int __fls(unsigned long x) /* * __ffs: Similar to ffs, but zero based (0-31) */ static inline __attribute__ ((const)) int __ffs(unsigned long word) static inline __attribute__ ((const)) unsigned long __ffs(unsigned long word) { if (!word) return word; Loading Loading @@ -346,9 +346,9 @@ static inline __attribute__ ((const)) int ffs(unsigned long x) /* * __ffs: Similar to ffs, but zero based (0-31) */ static inline __attribute__ ((const)) int __ffs(unsigned long x) static inline __attribute__ ((const)) unsigned long __ffs(unsigned long x) { int n; unsigned long n; asm volatile( " ffs.f %0, %1 \n" /* 0:31; 31(Z) if src 0 */ Loading arch/arc/include/asm/uaccess.h +4 −4 Original line number Diff line number Diff line Loading @@ -209,7 +209,7 @@ __arc_copy_from_user(void *to, const void __user *from, unsigned long n) */ "=&r" (tmp), "+r" (to), "+r" (from) : : "lp_count", "lp_start", "lp_end", "memory"); : "lp_count", "memory"); return n; } Loading Loading @@ -438,7 +438,7 @@ __arc_copy_to_user(void __user *to, const void *from, unsigned long n) */ "=&r" (tmp), "+r" (to), "+r" (from) : : "lp_count", "lp_start", "lp_end", "memory"); : "lp_count", "memory"); return n; } Loading Loading @@ -658,7 +658,7 @@ static inline unsigned long __arc_clear_user(void __user *to, unsigned long n) " .previous \n" : "+r"(d_char), "+r"(res) : "i"(0) : "lp_count", "lp_start", "lp_end", "memory"); : "lp_count", "memory"); return res; } Loading Loading @@ -691,7 +691,7 @@ __arc_strncpy_from_user(char *dst, const char __user *src, long count) " .previous \n" : "+r"(res), "+r"(dst), "+r"(src), "=r"(val) : "g"(-EFAULT), "r"(count) : "lp_count", "lp_start", "lp_end", "memory"); : "lp_count", "memory"); return res; } Loading arch/arc/kernel/head.S +10 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #include <asm/entry.h> #include <asm/arcregs.h> #include <asm/cache.h> #include <asm/irqflags.h> .macro CPU_EARLY_SETUP Loading Loading @@ -47,6 +48,15 @@ sr r5, [ARC_REG_DC_CTRL] 1: #ifdef CONFIG_ISA_ARCV2 ; Unaligned access is disabled at reset, so re-enable early as ; gcc 7.3.1 (ARC GNU 2018.03) onwards generates unaligned access ; by default lr r5, [status32] bset r5, r5, STATUS_AD_BIT kflag r5 #endif .endm .section .init.text, "ax",@progbits Loading Loading
Documentation/filesystems/overlayfs.txt +23 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,29 @@ Only the lists of names from directories are merged. Other content such as metadata and extended attributes are reported for the upper directory only. These attributes of the lower directory are hidden. credentials ----------- By default, all access to the upper, lower and work directories is the recorded mounter's MAC and DAC credentials. The incoming accesses are checked against the caller's credentials. In the case where caller MAC or DAC credentials do not overlap, a use case available in older versions of the driver, the override_creds mount flag can be turned off and help when the use pattern has caller with legitimate credentials where the mounter does not. Several unintended side effects will occur though. The caller without certain key capabilities or lower privilege will not always be able to delete files or directories, create nodes, or search some restricted directories. The ability to search and read a directory entry is spotty as a result of the cache mechanism not retesting the credentials because of the assumption, a privileged caller can fill cache, then a lower privilege can read the directory cache. The uneven security model where cache, upperdir and workdir are opened at privilege, but accessed without creating a form of privilege escalation, should only be used with strict understanding of the side effects and of the security policies. whiteouts and opaque directories -------------------------------- Loading
Makefile +1 −1 Original line number Diff line number Diff line VERSION = 4 PATCHLEVEL = 4 SUBLEVEL = 176 SUBLEVEL = 177 EXTRAVERSION = NAME = Blurry Fish Butt Loading
arch/arc/include/asm/bitops.h +3 −3 Original line number Diff line number Diff line Loading @@ -286,7 +286,7 @@ static inline __attribute__ ((const)) int __fls(unsigned long x) /* * __ffs: Similar to ffs, but zero based (0-31) */ static inline __attribute__ ((const)) int __ffs(unsigned long word) static inline __attribute__ ((const)) unsigned long __ffs(unsigned long word) { if (!word) return word; Loading Loading @@ -346,9 +346,9 @@ static inline __attribute__ ((const)) int ffs(unsigned long x) /* * __ffs: Similar to ffs, but zero based (0-31) */ static inline __attribute__ ((const)) int __ffs(unsigned long x) static inline __attribute__ ((const)) unsigned long __ffs(unsigned long x) { int n; unsigned long n; asm volatile( " ffs.f %0, %1 \n" /* 0:31; 31(Z) if src 0 */ Loading
arch/arc/include/asm/uaccess.h +4 −4 Original line number Diff line number Diff line Loading @@ -209,7 +209,7 @@ __arc_copy_from_user(void *to, const void __user *from, unsigned long n) */ "=&r" (tmp), "+r" (to), "+r" (from) : : "lp_count", "lp_start", "lp_end", "memory"); : "lp_count", "memory"); return n; } Loading Loading @@ -438,7 +438,7 @@ __arc_copy_to_user(void __user *to, const void *from, unsigned long n) */ "=&r" (tmp), "+r" (to), "+r" (from) : : "lp_count", "lp_start", "lp_end", "memory"); : "lp_count", "memory"); return n; } Loading Loading @@ -658,7 +658,7 @@ static inline unsigned long __arc_clear_user(void __user *to, unsigned long n) " .previous \n" : "+r"(d_char), "+r"(res) : "i"(0) : "lp_count", "lp_start", "lp_end", "memory"); : "lp_count", "memory"); return res; } Loading Loading @@ -691,7 +691,7 @@ __arc_strncpy_from_user(char *dst, const char __user *src, long count) " .previous \n" : "+r"(res), "+r"(dst), "+r"(src), "=r"(val) : "g"(-EFAULT), "r"(count) : "lp_count", "lp_start", "lp_end", "memory"); : "lp_count", "memory"); return res; } Loading
arch/arc/kernel/head.S +10 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #include <asm/entry.h> #include <asm/arcregs.h> #include <asm/cache.h> #include <asm/irqflags.h> .macro CPU_EARLY_SETUP Loading Loading @@ -47,6 +48,15 @@ sr r5, [ARC_REG_DC_CTRL] 1: #ifdef CONFIG_ISA_ARCV2 ; Unaligned access is disabled at reset, so re-enable early as ; gcc 7.3.1 (ARC GNU 2018.03) onwards generates unaligned access ; by default lr r5, [status32] bset r5, r5, STATUS_AD_BIT kflag r5 #endif .endm .section .init.text, "ax",@progbits Loading