commit:     dfb0a0a1ae8d29fac2ec39450ba0895328e6ffb6
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Tue Mar 29 00:52:35 2016 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Tue Mar 29 00:52:35 2016 +0000
URL:        https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=dfb0a0a1

Update 1500_XATTR_USER_PREFIX.patch for the new struct syntax in 4.5 kernels

 1500_XATTR_USER_PREFIX.patch | 43 +++++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 14 deletions(-)

diff --git a/1500_XATTR_USER_PREFIX.patch b/1500_XATTR_USER_PREFIX.patch
index cc15cd5..bacd032 100644
--- a/1500_XATTR_USER_PREFIX.patch
+++ b/1500_XATTR_USER_PREFIX.patch
@@ -14,10 +14,10 @@ enabled for tmpfs.  Users who do not enable xattrs will not 
have
 the XATTR_PAX flags preserved.
 
 diff --git a/include/uapi/linux/xattr.h b/include/uapi/linux/xattr.h
-index e4629b9..6958086 100644
+index 1590c49..5eab462 100644
 --- a/include/uapi/linux/xattr.h
 +++ b/include/uapi/linux/xattr.h
-@@ -63,5 +63,9 @@
+@@ -73,5 +73,9 @@
  #define XATTR_POSIX_ACL_DEFAULT  "posix_acl_default"
  #define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX 
XATTR_POSIX_ACL_DEFAULT
  
@@ -28,27 +28,42 @@ index e4629b9..6958086 100644
  
  #endif /* _UAPI_LINUX_XATTR_H */
 diff --git a/mm/shmem.c b/mm/shmem.c
-index 1c44af7..f23bb1b 100644
+index 440e2a7..c377172 100644
 --- a/mm/shmem.c
 +++ b/mm/shmem.c
-@@ -2201,6 +2201,7 @@ static const struct xattr_handler 
*shmem_xattr_handlers[] = {
- static int shmem_xattr_validate(const char *name)
- {
-       struct { const char *prefix; size_t len; } arr[] = {
-+              { XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN},
-               { XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN },
-               { XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN }
-       };
-@@ -2256,6 +2257,12 @@ static int shmem_setxattr(struct dentry *dentry, const 
char *name,
-       if (err)
-               return err;
+@@ -2667,6 +2667,14 @@ static int shmem_xattr_handler_set(const struct 
xattr_handler *handler,
+       struct shmem_inode_info *info = SHMEM_I(d_inode(dentry));
  
+       name = xattr_full_name(handler, name);
++
 +      if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN)) {
 +              if (strcmp(name, XATTR_NAME_PAX_FLAGS))
 +                      return -EOPNOTSUPP;
 +              if (size > 8)
 +                      return -EINVAL;
 +      }
++
        return simple_xattr_set(&info->xattrs, name, value, size, flags);
  }
  
+@@ -2682,6 +2690,12 @@ static const struct xattr_handler 
shmem_trusted_xattr_handler = {
+       .set = shmem_xattr_handler_set,
+ };
+ 
++static const struct xattr_handler shmem_user_xattr_handler = {
++      .prefix = XATTR_USER_PREFIX,
++      .get = shmem_xattr_handler_get,
++      .set = shmem_xattr_handler_set,
++};
++
+ static const struct xattr_handler *shmem_xattr_handlers[] = {
+ #ifdef CONFIG_TMPFS_POSIX_ACL
+       &posix_acl_access_xattr_handler,
+@@ -2689,6 +2703,7 @@ static const struct xattr_handler 
*shmem_xattr_handlers[] = {
+ #endif
+       &shmem_security_xattr_handler,
+       &shmem_trusted_xattr_handler,
++      &shmem_user_xattr_handler,
+       NULL
+ };
+ 

Reply via email to