| From 78c7d49f55d8631b67c09f9bfbe8155211a9ea06 Mon Sep 17 00:00:00 2001 |
| From: Richard Weinberger <richard@nod.at> |
| Date: Mon, 28 Sep 2020 20:58:59 +0200 |
| Subject: ubifs: journal: Make sure to not dirty twice for auth nodes |
| |
| From: Richard Weinberger <richard@nod.at> |
| |
| commit 78c7d49f55d8631b67c09f9bfbe8155211a9ea06 upstream. |
| |
| When removing the last reference of an inode the size of an auth node |
| is already part of write_len. So we must not call ubifs_add_auth_dirt(). |
| Call it only when needed. |
| |
| Cc: <stable@vger.kernel.org> |
| Cc: Sascha Hauer <s.hauer@pengutronix.de> |
| Cc: Kristof Havasi <havasiefr@gmail.com> |
| Fixes: 6a98bc4614de ("ubifs: Add authentication nodes to journal") |
| Reported-and-tested-by: Kristof Havasi <havasiefr@gmail.com> |
| Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de> |
| Signed-off-by: Richard Weinberger <richard@nod.at> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/ubifs/journal.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/fs/ubifs/journal.c |
| +++ b/fs/ubifs/journal.c |
| @@ -938,8 +938,6 @@ int ubifs_jnl_write_inode(struct ubifs_i |
| inode->i_ino); |
| release_head(c, BASEHD); |
| |
| - ubifs_add_auth_dirt(c, lnum); |
| - |
| if (last_reference) { |
| err = ubifs_tnc_remove_ino(c, inode->i_ino); |
| if (err) |
| @@ -949,6 +947,8 @@ int ubifs_jnl_write_inode(struct ubifs_i |
| } else { |
| union ubifs_key key; |
| |
| + ubifs_add_auth_dirt(c, lnum); |
| + |
| ino_key_init(c, &key, inode->i_ino); |
| err = ubifs_tnc_add(c, &key, lnum, offs, ilen, hash); |
| } |