On 7/13/22 5:26 PM, Wenpeng Liang wrote: <...> > +static int fmea_recover_others(struct hns_roce_dev *hr_dev, u32 res_type, > + u32 index) > +{ > + u8 write_bt0_op = fmea_ram_res[res_type].write_bt0_op; > + u8 read_bt0_op = fmea_ram_res[res_type].read_bt0_op; > + struct hns_roce_cmd_mailbox *mailbox; > + u64 addr; > + int ret; > + > + mailbox = hns_roce_alloc_cmd_mailbox(hr_dev); > + if (IS_ERR(mailbox)) > + return PTR_ERR(mailbox); > + > + ret = hns_roce_cmd_mbox(hr_dev, 0, mailbox->dma, read_bt0_op, index); > + if (ret) { > + dev_err(hr_dev->dev, > + "failed to execute cmd to read fmea ram, ret = %d.\n", > + ret); > + goto err; > + } > + > + addr = fmea_get_ram_res_addr(res_type, mailbox->buf); > + > + ret = hns_roce_cmd_mbox(hr_dev, addr, 0, write_bt0_op, index); > + if (ret) { > + dev_err(hr_dev->dev, > + "failed to execute cmd to write fmea ram, ret = %d.\n", > + ret); > + goto err; > + } > + Here it seems that you miss a "return 0" or the "goto err;" is unnecessary. Thanks, Cheng Xu > +err: > + hns_roce_free_cmd_mailbox(hr_dev, mailbox); > + return ret; > +} > +