Commit fea371e2 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for-linus-5.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs

Pull UBI and UBIFS fixes from Richard Weinberger:

 - Correctly set next cursor for detailed_erase_block_info debugfs file

 - Don't use crypto_shash_descsize() for digest size in UBIFS

 - Remove broken lazytime support from UBIFS

* tag 'for-linus-5.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs:
  ubi: Fix seq_file usage in detailed_erase_block_info debugfs file
  ubifs: fix wrong use of crypto_shash_descsize()
  ubifs: remove broken lazytime support
parents d303402c 0e7572cf
...@@ -393,9 +393,6 @@ static void *eraseblk_count_seq_start(struct seq_file *s, loff_t *pos) ...@@ -393,9 +393,6 @@ static void *eraseblk_count_seq_start(struct seq_file *s, loff_t *pos)
{ {
struct ubi_device *ubi = s->private; struct ubi_device *ubi = s->private;
if (*pos == 0)
return SEQ_START_TOKEN;
if (*pos < ubi->peb_count) if (*pos < ubi->peb_count)
return pos; return pos;
...@@ -409,8 +406,6 @@ static void *eraseblk_count_seq_next(struct seq_file *s, void *v, loff_t *pos) ...@@ -409,8 +406,6 @@ static void *eraseblk_count_seq_next(struct seq_file *s, void *v, loff_t *pos)
{ {
struct ubi_device *ubi = s->private; struct ubi_device *ubi = s->private;
if (v == SEQ_START_TOKEN)
return pos;
(*pos)++; (*pos)++;
if (*pos < ubi->peb_count) if (*pos < ubi->peb_count)
...@@ -432,11 +427,8 @@ static int eraseblk_count_seq_show(struct seq_file *s, void *iter) ...@@ -432,11 +427,8 @@ static int eraseblk_count_seq_show(struct seq_file *s, void *iter)
int err; int err;
/* If this is the start, print a header */ /* If this is the start, print a header */
if (iter == SEQ_START_TOKEN) { if (*block_number == 0)
seq_puts(s, seq_puts(s, "physical_block_number\terase_count\n");
"physical_block_number\terase_count\tblock_status\tread_status\n");
return 0;
}
err = ubi_io_is_bad(ubi, *block_number); err = ubi_io_is_bad(ubi, *block_number);
if (err) if (err)
......
...@@ -79,13 +79,9 @@ int ubifs_prepare_auth_node(struct ubifs_info *c, void *node, ...@@ -79,13 +79,9 @@ int ubifs_prepare_auth_node(struct ubifs_info *c, void *node,
struct shash_desc *inhash) struct shash_desc *inhash)
{ {
struct ubifs_auth_node *auth = node; struct ubifs_auth_node *auth = node;
u8 *hash; u8 hash[UBIFS_HASH_ARR_SZ];
int err; int err;
hash = kmalloc(crypto_shash_descsize(c->hash_tfm), GFP_NOFS);
if (!hash)
return -ENOMEM;
{ {
SHASH_DESC_ON_STACK(hash_desc, c->hash_tfm); SHASH_DESC_ON_STACK(hash_desc, c->hash_tfm);
...@@ -94,21 +90,16 @@ int ubifs_prepare_auth_node(struct ubifs_info *c, void *node, ...@@ -94,21 +90,16 @@ int ubifs_prepare_auth_node(struct ubifs_info *c, void *node,
err = crypto_shash_final(hash_desc, hash); err = crypto_shash_final(hash_desc, hash);
if (err) if (err)
goto out; return err;
} }
err = ubifs_hash_calc_hmac(c, hash, auth->hmac); err = ubifs_hash_calc_hmac(c, hash, auth->hmac);
if (err) if (err)
goto out; return err;
auth->ch.node_type = UBIFS_AUTH_NODE; auth->ch.node_type = UBIFS_AUTH_NODE;
ubifs_prepare_node(c, auth, ubifs_auth_node_sz(c), 0); ubifs_prepare_node(c, auth, ubifs_auth_node_sz(c), 0);
return 0;
err = 0;
out:
kfree(hash);
return err;
} }
static struct shash_desc *ubifs_get_desc(const struct ubifs_info *c, static struct shash_desc *ubifs_get_desc(const struct ubifs_info *c,
......
...@@ -1375,7 +1375,6 @@ int ubifs_update_time(struct inode *inode, struct timespec64 *time, ...@@ -1375,7 +1375,6 @@ int ubifs_update_time(struct inode *inode, struct timespec64 *time,
struct ubifs_info *c = inode->i_sb->s_fs_info; struct ubifs_info *c = inode->i_sb->s_fs_info;
struct ubifs_budget_req req = { .dirtied_ino = 1, struct ubifs_budget_req req = { .dirtied_ino = 1,
.dirtied_ino_d = ALIGN(ui->data_len, 8) }; .dirtied_ino_d = ALIGN(ui->data_len, 8) };
int iflags = I_DIRTY_TIME;
int err, release; int err, release;
if (!IS_ENABLED(CONFIG_UBIFS_ATIME_SUPPORT)) if (!IS_ENABLED(CONFIG_UBIFS_ATIME_SUPPORT))
...@@ -1393,11 +1392,8 @@ int ubifs_update_time(struct inode *inode, struct timespec64 *time, ...@@ -1393,11 +1392,8 @@ int ubifs_update_time(struct inode *inode, struct timespec64 *time,
if (flags & S_MTIME) if (flags & S_MTIME)
inode->i_mtime = *time; inode->i_mtime = *time;
if (!(inode->i_sb->s_flags & SB_LAZYTIME))
iflags |= I_DIRTY_SYNC;
release = ui->dirty; release = ui->dirty;
__mark_inode_dirty(inode, iflags); __mark_inode_dirty(inode, I_DIRTY_SYNC);
mutex_unlock(&ui->ui_mutex); mutex_unlock(&ui->ui_mutex);
if (release) if (release)
ubifs_release_budget(c, &req); ubifs_release_budget(c, &req);
......
...@@ -601,18 +601,12 @@ static int authenticate_sleb(struct ubifs_info *c, struct ubifs_scan_leb *sleb, ...@@ -601,18 +601,12 @@ static int authenticate_sleb(struct ubifs_info *c, struct ubifs_scan_leb *sleb,
struct ubifs_scan_node *snod; struct ubifs_scan_node *snod;
int n_nodes = 0; int n_nodes = 0;
int err; int err;
u8 *hash, *hmac; u8 hash[UBIFS_HASH_ARR_SZ];
u8 hmac[UBIFS_HMAC_ARR_SZ];
if (!ubifs_authenticated(c)) if (!ubifs_authenticated(c))
return sleb->nodes_cnt; return sleb->nodes_cnt;
hash = kmalloc(crypto_shash_descsize(c->hash_tfm), GFP_NOFS);
hmac = kmalloc(c->hmac_desc_len, GFP_NOFS);
if (!hash || !hmac) {
err = -ENOMEM;
goto out;
}
list_for_each_entry(snod, &sleb->nodes, list) { list_for_each_entry(snod, &sleb->nodes, list) {
n_nodes++; n_nodes++;
...@@ -662,9 +656,6 @@ static int authenticate_sleb(struct ubifs_info *c, struct ubifs_scan_leb *sleb, ...@@ -662,9 +656,6 @@ static int authenticate_sleb(struct ubifs_info *c, struct ubifs_scan_leb *sleb,
err = 0; err = 0;
} }
out: out:
kfree(hash);
kfree(hmac);
return err ? err : n_nodes - n_not_auth; return err ? err : n_nodes - n_not_auth;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment