summaryrefslogtreecommitdiffstats
path: root/fs/ubifs/super.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2018-09-07 14:36:29 +0200
committerRichard Weinberger <richard@nod.at>2018-10-23 13:48:29 +0200
commitfd6150051becd3a9f8039046e3af91fd9ef01e57 (patch)
treeaabefd3ff8aeb73b879e8108be4fa051652fc51f /fs/ubifs/super.c
parentubifs: Drop write_node (diff)
downloadlinux-fd6150051becd3a9f8039046e3af91fd9ef01e57.tar.xz
linux-fd6150051becd3a9f8039046e3af91fd9ef01e57.zip
ubifs: Store read superblock node
The superblock node is read/modified/written several times throughout the UBIFS code. Instead of reading it from the device each time just keep a copy in memory and write back the modified copy when necessary. This patch helps for authentication support, here we not only have to read the superblock node, but also have to authenticate it, which is easier if we do it once during initialization. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'fs/ubifs/super.c')
-rw-r--r--fs/ubifs/super.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index fec62e9dfbe6..70a64e00f0a8 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -1605,16 +1605,10 @@ static int ubifs_remount_rw(struct ubifs_info *c)
goto out;
if (c->old_leb_cnt != c->leb_cnt) {
- struct ubifs_sb_node *sup;
+ struct ubifs_sb_node *sup = c->sup_node;
- sup = ubifs_read_sb_node(c);
- if (IS_ERR(sup)) {
- err = PTR_ERR(sup);
- goto out;
- }
sup->leb_cnt = cpu_to_le32(c->leb_cnt);
err = ubifs_write_sb_node(c, sup);
- kfree(sup);
if (err)
goto out;
}