]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/ext4/xattr.c
ext4: revert buggy trim overflow patch
[karo-tx-linux.git] / fs / ext4 / xattr.c
index fa4b899da4b37243cb298ecff6b822a888262899..fc32176eee39ede67320bebeb44a80812d7d0f21 100644 (file)
@@ -427,23 +427,23 @@ cleanup:
 static int
 ext4_xattr_list(struct dentry *dentry, char *buffer, size_t buffer_size)
 {
-       int i_error, b_error;
+       int ret, ret2;
 
        down_read(&EXT4_I(dentry->d_inode)->xattr_sem);
-       i_error = ext4_xattr_ibody_list(dentry, buffer, buffer_size);
-       if (i_error < 0) {
-               b_error = 0;
-       } else {
-               if (buffer) {
-                       buffer += i_error;
-                       buffer_size -= i_error;
-               }
-               b_error = ext4_xattr_block_list(dentry, buffer, buffer_size);
-               if (b_error < 0)
-                       i_error = 0;
+       ret = ret2 = ext4_xattr_ibody_list(dentry, buffer, buffer_size);
+       if (ret < 0)
+               goto errout;
+       if (buffer) {
+               buffer += ret;
+               buffer_size -= ret;
        }
+       ret = ext4_xattr_block_list(dentry, buffer, buffer_size);
+       if (ret < 0)
+               goto errout;
+       ret += ret2;
+errout:
        up_read(&EXT4_I(dentry->d_inode)->xattr_sem);
-       return i_error + b_error;
+       return ret;
 }
 
 /*
@@ -947,7 +947,7 @@ ext4_xattr_ibody_set(handle_t *handle, struct inode *inode,
 /*
  * ext4_xattr_set_handle()
  *
- * Create, replace or remove an extended attribute for this inode. Buffer
+ * Create, replace or remove an extended attribute for this inode.  Value
  * is NULL to remove an existing extended attribute, and non-NULL to
  * either replace an existing extended attribute, or create a new extended
  * attribute. The flags XATTR_REPLACE and XATTR_CREATE