kernel: make the kernel 3.18 patches apply and boot on arm.
[15.05/openwrt.git] / target / linux / generic / patches-3.18 / 550-ubifs-symlink-xattr-support.patch
index 0235340..d3f2ccc 100644 (file)
@@ -1,6 +1,6 @@
 --- a/fs/ubifs/file.c
 +++ b/fs/ubifs/file.c
-@@ -1576,6 +1576,10 @@ const struct inode_operations ubifs_syml
+@@ -1573,6 +1573,10 @@ const struct inode_operations ubifs_syml
        .follow_link = ubifs_follow_link,
        .setattr     = ubifs_setattr,
        .getattr     = ubifs_getattr,
  const struct file_operations ubifs_file_operations = {
 --- a/fs/ubifs/journal.c
 +++ b/fs/ubifs/journal.c
-@@ -553,7 +553,8 @@ int ubifs_jnl_update(struct ubifs_info *
-       dbg_jnl("ino %lu, dent '%.*s', data len %d in dir ino %lu",
-               inode->i_ino, nm->len, nm->name, ui->data_len, dir->i_ino);
--      ubifs_assert(dir_ui->data_len == 0);
-+      if (!xent)
-+              ubifs_assert(dir_ui->data_len == 0);
-       ubifs_assert(mutex_is_locked(&dir_ui->ui_mutex));
-       dlen = UBIFS_DENT_NODE_SZ + nm->len + 1;
-@@ -573,6 +574,13 @@ int ubifs_jnl_update(struct ubifs_info *
+@@ -572,6 +572,13 @@ int ubifs_jnl_update(struct ubifs_info *
        aligned_dlen = ALIGN(dlen, 8);
        aligned_ilen = ALIGN(ilen, 8);
        len = aligned_dlen + aligned_ilen + UBIFS_INO_NODE_SZ;
 +      if (xent) {
 +              /*
-+               * Make sure to account for dir_ui->data_len in
++               * Make sure to account for host_ui->data_len in
 +               * length calculation in case there is extended attribute.
 +               */
-+              len += dir_ui->data_len;
++              len += host_ui->data_len;
 +      }
        dent = kmalloc(len, GFP_NOFS);
        if (!dent)
                return -ENOMEM;
-@@ -649,7 +657,8 @@ int ubifs_jnl_update(struct ubifs_info *
+@@ -648,7 +655,8 @@ int ubifs_jnl_update(struct ubifs_info *
  
        ino_key_init(c, &ino_key, dir->i_ino);
        ino_offs += aligned_ilen;
 -      err = ubifs_tnc_add(c, &ino_key, lnum, ino_offs, UBIFS_INO_NODE_SZ);
 +      err = ubifs_tnc_add(c, &ino_key, lnum, ino_offs,
-+                          UBIFS_INO_NODE_SZ + dir_ui->data_len);
++                          UBIFS_INO_NODE_SZ + host_ui->data_len);
        if (err)
                goto out_ro;