Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8708a92 authored by KaiGai Kohei's avatar KaiGai Kohei
Browse files

[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: default avatarKaiGai Kohei <kaigai@ak.jp.nec.com>
parent dea80134
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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),
								je32_to_cpu(spx->version));
				if (IS_ERR(xd)) {
					JFFS2_NOTICE("allocation of xattr_datum failed\n");
					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);
					return PTR_ERR(xd);
				}