[PATCH 19/27] ubifs: ubifs_dump: dump master node
Dongsheng Yang
yangds.fnst at cn.fujitsu.com
Thu Oct 8 20:52:24 PDT 2015
On 10/08/2015 06:07 PM, David Gstir wrote:
> Hi Yang,
>
> I just spotted this issue while reading through your patches:
>
>> On 19.08.2015, at 10:39, Dongsheng Yang <yangds.fnst at cn.fujitsu.com> wrote:
>
> [...]
>
>> +static int scan_for_master(struct ubifs_info *c, struct ubifs_mst_node *mst_node)
>> {
>> + struct ubifs_scan_leb *sleb;
>> + struct ubifs_scan_node *snod;
>> + int lnum, offs = 0, nodes_cnt;
>> + static void *leb_buf;
>> int err = 0;
>> +
>> + lnum = UBIFS_MST_LNUM;
>>
>> - err = init();
>> - if (err)
>> + leb_buf = malloc(c->leb_size);
>> + if (!leb_buf)
>> + return -ENOMEM;
>> +
>> + sleb = ubifs_scan(c, lnum, 0, leb_buf, 1);
>> + if (IS_ERR(sleb)) {
>> + err = PTR_ERR(sleb);
>> goto out;
>
> This goto will run ubifs_scan_destroy(sleb), which does not work since sleb ist just an ERR_PTR here.
Yes, my mistake, will update it soon.
Thanx
Yang
>
>> + }
>> + nodes_cnt = sleb->nodes_cnt;
>> + if (nodes_cnt > 0) {
>> + snod = list_entry(sleb->nodes.prev, struct ubifs_scan_node,
>> + list);
>> + if (snod->type != UBIFS_MST_NODE) {
>> + err = -EINVAL;
>> + goto out;
>> + }
>> + memcpy(mst_node, snod->node, snod->len);
>> + offs = snod->offs;
>> + }
>> + ubifs_scan_destroy(sleb);
>> +
>> + lnum += 1;
>> +
>> + sleb = ubifs_scan(c, lnum, 0, leb_buf, 1);
>> + if (IS_ERR(sleb)) {
>> + err = PTR_ERR(sleb);
>> + goto out;
>
> Same here.
>
>> + }
>> + err = -EUCLEAN;
>> + if (sleb->nodes_cnt != nodes_cnt)
>> + goto out;
>> + if (!sleb->nodes_cnt)
>> + goto out;
>> + snod = list_entry(sleb->nodes.prev, struct ubifs_scan_node, list);
>> + if (snod->type != UBIFS_MST_NODE) {
>> + err = -EINVAL;
>> + goto out;
>> + }
>> + if (snod->offs != offs)
>> + goto out;
>> + if (memcmp((void *)mst_node + UBIFS_CH_SZ,
>> + (void *)snod->node + UBIFS_CH_SZ,
>> + UBIFS_MST_NODE_SZ - UBIFS_CH_SZ))
>> + goto out;
>> + err = 0;
>> +
>> +out:
>> + free(leb_buf);
>> + ubifs_scan_destroy(sleb);
>> + return err;
>> +}
>
> Cheers,
> David
>
>
> .
>
More information about the linux-mtd
mailing list