kernel: bump 4.19 to 4.19.16
[openwrt/staging/lynxis.git] / target / linux / generic / backport-4.19 / 500-ubifs-Handle-re-linking-of-inodes-correctly-while-re.patch
index 71e036c92082584ff5a9c0ad79b55e530b87fa27..53e2c2aaba75adf53c01a2309b9577699034733d 100644 (file)
@@ -36,7 +36,7 @@ Signed-off-by: Richard Weinberger <richard@nod.at>
 
 --- a/fs/ubifs/replay.c
 +++ b/fs/ubifs/replay.c
-@@ -210,6 +210,38 @@ static int trun_remove_range(struct ubif
+@@ -242,6 +242,38 @@ static bool inode_still_linked(struct ub
  }
  
  /**
@@ -53,21 +53,21 @@ Signed-off-by: Richard Weinberger <richard@nod.at>
 +{
 +      struct replay_entry *r;
 +
-+      ubifs_assert(rino->deletion);
-+      ubifs_assert(key_type(c, &rino->key) == UBIFS_INO_KEY);
++      ubifs_assert(c, rino->deletion);
++      ubifs_assert(c, key_type(c, &rino->key) == UBIFS_INO_KEY);
 +
 +      /*
 +       * Find the most recent entry for the inode behind @rino and check
 +       * whether it is a deletion.
 +       */
 +      list_for_each_entry_reverse(r, &c->replay_list, list) {
-+              ubifs_assert(r->sqnum >= rino->sqnum);
++              ubifs_assert(c, r->sqnum >= rino->sqnum);
 +              if (key_inum(c, &r->key) == key_inum(c, &rino->key))
 +                      return r->deletion == 0;
 +
 +      }
 +
-+      ubifs_assert(0);
++      ubifs_assert(c, 0);
 +      return false;
 +}
 +
@@ -75,15 +75,15 @@ Signed-off-by: Richard Weinberger <richard@nod.at>
   * apply_replay_entry - apply a replay entry to the TNC.
   * @c: UBIFS file-system description object
   * @r: replay entry to apply
-@@ -239,6 +271,11 @@ static int apply_replay_entry(struct ubi
-                       {
-                               ino_t inum = key_inum(c, &r->key);
+@@ -270,6 +302,11 @@ static int apply_replay_entry(struct ubi
  
-+                              if (inode_still_linked(c, r)) {
-+                                      err = 0;
+                               if (inode_still_linked(c, r)) {
+                                       err = 0;
 +                                      break;
 +                              }
 +
-                               err = ubifs_tnc_remove_ino(c, inum);
-                               break;
-                       }
++                              if (inode_still_linked(c, r)) {
++                                      err = 0;
+                                       break;
+                               }