mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-01 16:44:35 +07:00
[JFFS2][XATTR] Handling the duplicate JFFS2_NODETYPE_XATTR node cases.
When jffs2_sum_process_sum_data() found a JFFS2_NODETYPE_XATTR which has duplicate xid and older version, an error was returned without appropriate process. In the result, mounting filesystem is failed. This patch fix this problem. If jffs2_setup_xattr_datum() returned -EEXIST, the caller marks this node as DIRTY_SPACE(). [1/2] jffs2-xattr-v5.2-01-fix-duplicate-xdatum.patch Signed-off-by: KaiGai Kohei <kaigai@ak.jp.nec.com>
This commit is contained in:
parent
dea80134dc
commit
c8708a9275
@ -508,8 +508,14 @@ static int jffs2_sum_process_sum_data(struct jffs2_sb_info *c, struct jffs2_eras
|
|||||||
xd = jffs2_setup_xattr_datum(c, je32_to_cpu(spx->xid),
|
xd = jffs2_setup_xattr_datum(c, je32_to_cpu(spx->xid),
|
||||||
je32_to_cpu(spx->version));
|
je32_to_cpu(spx->version));
|
||||||
if (IS_ERR(xd)) {
|
if (IS_ERR(xd)) {
|
||||||
JFFS2_NOTICE("allocation of xattr_datum failed\n");
|
|
||||||
jffs2_free_raw_node_ref(raw);
|
jffs2_free_raw_node_ref(raw);
|
||||||
|
if (PTR_ERR(xd) == -EEXIST) {
|
||||||
|
/* a newer version of xd exists */
|
||||||
|
DIRTY_SPACE(je32_to_cpu(spx->totlen));
|
||||||
|
sp += JFFS2_SUMMARY_XATTR_SIZE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
JFFS2_NOTICE("allocation of xattr_datum failed\n");
|
||||||
kfree(summary);
|
kfree(summary);
|
||||||
return PTR_ERR(xd);
|
return PTR_ERR(xd);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user