Re: mountd: Possible bug in next_mnt()
From: Richard Weinberger <richard@nod.at>
Date: 2023-03-12 16:51:49
----- Ursprüngliche Mail -----
quoted
Well, the goal of my mail was not sending a ready-to-apply patch. It was a question. To me next_mnt() looks wrong but I'm not sure whether the current handling of "/" is desired for some special case I'm not aware of. I'll happily send a patch after we agree that next_mnt() is wrong.I'm still trying to reproduce problem... I have /etc/nfs.conf: rootdir=/export /etc/exports: /home *(rw,sec=sys:krb5:krb5i:krb5p) /tmp *(rw,fsid=666,all_squash) / *(rw,fsid=root,all_squash) I'm not seeing the problem... Where does the crossmount come in?
Chris reported the problem to me while he was testing my re-export/crossmount patches. I can try reproducing without re-exporting later. In theory you should see the problem as follows: 1. Have rootdir=/export in your nfs.conf 2. /export is some filesystem that contains more mounts 3. /export/fs1 is a different filesytem 4. /export/fs2 is a different filesytem too 5. /etc/exports contains: / *(rw,fsid=root,all_squash,crossmount) Client mounts / to /nfs and then tries to access /nfs/fs1. Then nfsd_fh() iterates over all exports, finds one with NFSEXP_CROSSMOUNT set. Using next_mnt() it finds possible sub-mounts. But for the "/" case next_mnt() returns none -> nfsd_fh() fails -> client cannot enter /nfs/fs1. Thanks, //richard