Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-3.15' of git://linux-nfs.org/~bfields/linux

Pull two nfsd bugfixes from Bruce Fields:
"Just two bugfixes, one for a merge-window-introduced ACL regression,
the other for a longer-standing v4 state bug"

* 'for-3.15' of git://linux-nfs.org/~bfields/linux:
nfsd4: warn on finding lockowner without stateid's
nfsd4: remove lockowner when removing lock stateid
nfsd4: fix corruption on setting an ACL.

+14 -3
+1 -1
fs/nfsd/nfs4acl.c
··· 590 590 add_to_mask(state, &state->groups->aces[i].perms); 591 591 } 592 592 593 - if (!state->users->n && !state->groups->n) { 593 + if (state->users->n || state->groups->n) { 594 594 pace++; 595 595 pace->e_tag = ACL_MASK; 596 596 low_mode_from_nfs4(state->mask.allow, &pace->e_perm, flags);
+13 -2
fs/nfsd/nfs4state.c
··· 3717 3717 static __be32 3718 3718 nfsd4_free_lock_stateid(struct nfs4_ol_stateid *stp) 3719 3719 { 3720 - if (check_for_locks(stp->st_file, lockowner(stp->st_stateowner))) 3720 + struct nfs4_lockowner *lo = lockowner(stp->st_stateowner); 3721 + 3722 + if (check_for_locks(stp->st_file, lo)) 3721 3723 return nfserr_locks_held; 3722 - release_lock_stateid(stp); 3724 + /* 3725 + * Currently there's a 1-1 lock stateid<->lockowner 3726 + * correspondance, and we have to delete the lockowner when we 3727 + * delete the lock stateid: 3728 + */ 3729 + unhash_lockowner(lo); 3723 3730 return nfs_ok; 3724 3731 } 3725 3732 ··· 4166 4159 4167 4160 if (!same_owner_str(&lo->lo_owner, owner, clid)) 4168 4161 return false; 4162 + if (list_empty(&lo->lo_owner.so_stateids)) { 4163 + WARN_ON_ONCE(1); 4164 + return false; 4165 + } 4169 4166 lst = list_first_entry(&lo->lo_owner.so_stateids, 4170 4167 struct nfs4_ol_stateid, st_perstateowner); 4171 4168 return lst->st_file->fi_inode == inode;