Message ID | 20210603135145.972633-1-weiyongjun1@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [-next] NFSD: Fix error return code in nfsd4_interssc_connect() | expand |
On Thu, Jun 03, 2021 at 01:51:45PM +0000, Wei Yongjun wrote: > 'status' has been overwritten to 0 after nfsd4_ssc_setup_dul(), this > cause 0 will be return in vfs_kern_mount() error case. Fix to return > nfserr_inval in this error case. Is nfserr_inval the correct error? --b. > > Fixes: f4e44b393389 ("NFSD: delay unmount source's export after inter-server copy completed.") > Reported-by: Hulk Robot <hulkci@huawei.com> > Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> > --- > fs/nfsd/nfs4proc.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c > index 0bd71c6da81d..2bfb6c408dc6 100644 > --- a/fs/nfsd/nfs4proc.c > +++ b/fs/nfsd/nfs4proc.c > @@ -1323,6 +1323,7 @@ nfsd4_interssc_connect(struct nl4_server *nss, struct svc_rqst *rqstp, > ss_mnt = vfs_kern_mount(type, SB_KERNMOUNT, dev_name, raw_data); > module_put(type->owner); > if (IS_ERR(ss_mnt)) { > + status = nfserr_inval; > if (work) > nfsd4_ssc_cancel_dul_work(nn, work); > goto out_free_devname;
On 6/3/21 6:51 AM, Wei Yongjun wrote: > 'status' has been overwritten to 0 after nfsd4_ssc_setup_dul(), this > cause 0 will be return in vfs_kern_mount() error case. Fix to return > nfserr_inval in this error case. > > Fixes: f4e44b393389 ("NFSD: delay unmount source's export after inter-server copy completed.") > Reported-by: Hulk Robot <hulkci@huawei.com> > Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> > --- > fs/nfsd/nfs4proc.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c > index 0bd71c6da81d..2bfb6c408dc6 100644 > --- a/fs/nfsd/nfs4proc.c > +++ b/fs/nfsd/nfs4proc.c > @@ -1323,6 +1323,7 @@ nfsd4_interssc_connect(struct nl4_server *nss, struct svc_rqst *rqstp, > ss_mnt = vfs_kern_mount(type, SB_KERNMOUNT, dev_name, raw_data); > module_put(type->owner); > if (IS_ERR(ss_mnt)) { > + status = nfserr_inval; I think the correct error code is nfserr_nodev. -Dai > if (work) > nfsd4_ssc_cancel_dul_work(nn, work); > goto out_free_devname; >
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index 0bd71c6da81d..2bfb6c408dc6 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -1323,6 +1323,7 @@ nfsd4_interssc_connect(struct nl4_server *nss, struct svc_rqst *rqstp, ss_mnt = vfs_kern_mount(type, SB_KERNMOUNT, dev_name, raw_data); module_put(type->owner); if (IS_ERR(ss_mnt)) { + status = nfserr_inval; if (work) nfsd4_ssc_cancel_dul_work(nn, work); goto out_free_devname;
'status' has been overwritten to 0 after nfsd4_ssc_setup_dul(), this cause 0 will be return in vfs_kern_mount() error case. Fix to return nfserr_inval in this error case. Fixes: f4e44b393389 ("NFSD: delay unmount source's export after inter-server copy completed.") Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> --- fs/nfsd/nfs4proc.c | 1 + 1 file changed, 1 insertion(+)