Re: [PATCH] flexfiles/pNFS: fix NULL checks on result of ff_layout_choose_ds_for_read

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 28, 2025 at 03:38:43PM +0200, Tigran Mkrtchyan wrote:
> Recent commit f06bedfa62d5 ("pNFS/flexfiles: don't attempt pnfs on fatal DS
> errors") has changed the error return type of ff_layout_choose_ds_for_read() from
> NULL to an error pointer. However, not all code paths have been updated
> to match the change. Thus, some non-NULL checks will accept error pointers
> as a valid return value.
> 
> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> Fixes: f06bedfa62d5 ("pNFS/flexfiles: don't attempt pnfs on fatal DS errors")
> Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@xxxxxxx>
> ---

This is still not complete.

  1073  static void ff_layout_resend_pnfs_read(struct nfs_pgio_header *hdr)
  1074  {
  1075          u32 idx = hdr->pgio_mirror_idx + 1;
  1076          u32 new_idx = 0;
  1077  
  1078          if (ff_layout_choose_any_ds_for_read(hdr->lseg, idx, &new_idx))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This should be:

	struct nfs4_pnfs_ds *ds;

	ds = ff_layout_choose_any_ds_for_read(hdr->lseg, idx, &new_idx);
	if (IS_ERR(ds))
		pnfs_error_mark_layout_for_return(hdr->inode, hdr->lseg);
	else
		ff_layout_send_layouterror(hdr->lseg);

  1079                  ff_layout_send_layouterror(hdr->lseg);
  1080          else
  1081                  pnfs_error_mark_layout_for_return(hdr->inode, hdr->lseg);
  1082          pnfs_read_resend_pnfs(hdr, new_idx);
  1083  }

Also the continue in ff_layout_choose_ds_for_read() still needs to be
fixed as I mentioned earlier.

regards,
dan carpenter





[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux