Ping? No sign of this in linux-next, and no replies.... Thanks, NeilBrown On Fri, Oct 21 2016, NeilBrown wrote: > > Various places assume that if nfs4_fl_prepare_ds() turns a non-NULL > 'ds', then ds->ds_clp will also be non-NULL. > > This is not necessasrily true in the case when the process received a > fatal signal while nfs4_pnfs_ds_connect is waiting in > nfs4_wait_ds_connect(). In that case ->ds_clp may not be set, and the > devid may not recently have been marked unavailable. > > So add a test for ->ds_clp == NULL and return NULL in that case. > > Fixes: c23266d532b4 ("NFS4.1 Fix data server connection race") > Signed-off-by: NeilBrown <neilb@xxxxxxxx> > --- > fs/nfs/filelayout/filelayoutdev.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/fs/nfs/filelayout/filelayoutdev.c b/fs/nfs/filelayout/filelayoutdev.c > index 4946ef40ba87..85ef38f9765f 100644 > --- a/fs/nfs/filelayout/filelayoutdev.c > +++ b/fs/nfs/filelayout/filelayoutdev.c > @@ -283,7 +283,8 @@ nfs4_fl_prepare_ds(struct pnfs_layout_segment *lseg, u32 ds_idx) > s->nfs_client->cl_rpcclient->cl_auth->au_flavor); > > out_test_devid: > - if (filelayout_test_devid_unavailable(devid)) > + if (ret->ds_clp == NULL || > + filelayout_test_devid_unavailable(devid)) > ret = NULL; > out: > return ret; > -- > 2.10.1
Attachment:
signature.asc
Description: PGP signature