diff options
author | rmacklem <rmacklem@FreeBSD.org> | 2010-04-15 22:57:30 +0000 |
---|---|---|
committer | rmacklem <rmacklem@FreeBSD.org> | 2010-04-15 22:57:30 +0000 |
commit | a2d9acce0d5166a4dfc785a69330d046b7436c4d (patch) | |
tree | 3856375a54aca33c4f80c011377bffc54088ebb9 /sys/fs/nfs/nfs_commonport.c | |
parent | 1e60f70fdddc6c9caf965fdd1ee6d2f9a62e9fac (diff) | |
download | FreeBSD-src-a2d9acce0d5166a4dfc785a69330d046b7436c4d.zip FreeBSD-src-a2d9acce0d5166a4dfc785a69330d046b7436c4d.tar.gz |
The experimental NFS client was not filling in recovery credentials
for opens done locally in the client when a delegation for the file
was held. This could cause the client to crash in crsetgroups() when
recovering from a server crash/reboot. This patch fills in the
recovery credentials for this case, in order to avoid the client crash.
Also, add KASSERT()s to the credential copy functions, to catch any
other cases where the credentials aren't filled in correctly.
MFC after: 1 week
Diffstat (limited to 'sys/fs/nfs/nfs_commonport.c')
-rw-r--r-- | sys/fs/nfs/nfs_commonport.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/fs/nfs/nfs_commonport.c b/sys/fs/nfs/nfs_commonport.c index a65ebde..2849163 100644 --- a/sys/fs/nfs/nfs_commonport.c +++ b/sys/fs/nfs/nfs_commonport.c @@ -225,6 +225,8 @@ void newnfs_copycred(struct nfscred *nfscr, struct ucred *cr) { + KASSERT(nfscr->nfsc_ngroups >= 0, + ("newnfs_copycred: negative nfsc_ngroups")); cr->cr_uid = nfscr->nfsc_uid; crsetgroups(cr, nfscr->nfsc_ngroups, nfscr->nfsc_groups); } |