A typo in nfs4_refresh_delegation_stateid() means we're leaking an RCU lock, and always returning a value of 'false'. As the function description states, we were always supposed to return 'true' if a matching delegation was found.
Unified · Split
| @@ -1191,7 +1191,7 @@ bool nfs4_refresh_delegation_stateid(nfs4_stateid *dst, struct inode *inode) · 1190 unmodified lines | ||
| 1191 | 1191 | if (delegation != NULL && |
| 1192 | 1192 | nfs4_stateid_match_other(dst, &delegation->stateid)) { |
| 1193 | 1193 | dst->seqid = delegation->stateid.seqid; |
| 1194 | − return ret; | |
| 1194 | + ret = true; | |
| 1195 | 1195 | } |
| 1196 | 1196 | rcu_read_unlock(); |
| 1197 | 1197 | out: |