History

Merge tag 'nfsd-4.10-1' of git://linux-nfs.org/~bfields/linux

Pull nfsd fixes from Bruce Fields: "Miscellaneous nfsd bugfixes, one for a 4.10 regression, three for older bugs" * tag 'nfsd-4.10-1' of git://linux-nfs.org/~bfields/linux: svcrdma: avoid duplicate dma unmapping during error recovery sunrpc: don't call sleeping functions from the notifier block callbacks svcrpc: don't leak contexts on PROC_DESTROY nfsd: fix supported attributes for acl & labels

Linus Torvalds committed 9 years ago

Commit 2eabb8b2 parents 49def18 ce1ca7d5 files · +12 −7Browse files

Unified · Split

5 files
  1. fs/nfsd/nfs4xdr.c +3 −1
  2. include/linux/sunrpc/svc_xprt.h +1 −0
  3. net/sunrpc/auth_gss/svcauth_gss.c +1 −1
  4. net/sunrpc/svc_xprt.c +7 −3
  5. net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +0 −2
fs/nfsd/nfs4xdr.c+3−1
@@ -2440,7 +2440,9 @@ nfsd4_encode_fattr(struct xdr_stream *xdr, struct svc_fh *fhp, · 2439 unmodified lines
2440 p++; /* to be backfilled later */2440 p++; /* to be backfilled later */
2441 2441
2442 if (bmval0 & FATTR4_WORD0_SUPPORTED_ATTRS) {2442 if (bmval0 & FATTR4_WORD0_SUPPORTED_ATTRS) {
2443 u32 *supp = nfsd_suppattrs[minorversion];2443 u32 supp[3];
2444
2445 memcpy(supp, nfsd_suppattrs[minorversion], sizeof(supp));
2444 2446
2445 if (!IS_POSIXACL(dentry->d_inode))2447 if (!IS_POSIXACL(dentry->d_inode))
2446 supp[0] &= ~FATTR4_WORD0_ACL;2448 supp[0] &= ~FATTR4_WORD0_ACL;
include/linux/sunrpc/svc_xprt.h+1−0
@@ -66,6 +66,7 @@ struct svc_xprt { · 65 unmodified lines
66#define XPT_LISTENER 10 /* listening endpoint */66#define XPT_LISTENER 10 /* listening endpoint */
67#define XPT_CACHE_AUTH 11 /* cache auth info */67#define XPT_CACHE_AUTH 11 /* cache auth info */
68#define XPT_LOCAL 12 /* connection from loopback interface */68#define XPT_LOCAL 12 /* connection from loopback interface */
69#define XPT_KILL_TEMP 13 /* call xpo_kill_temp_xprt before closing */
69 70
70 struct svc_serv *xpt_server; /* service for transport */71 struct svc_serv *xpt_server; /* service for transport */
71 atomic_t xpt_reserved; /* space on outq that is rsvd */72 atomic_t xpt_reserved; /* space on outq that is rsvd */
net/sunrpc/auth_gss/svcauth_gss.c+1−1
@@ -1489,7 +1489,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp, __be32 *authp) · 1488 unmodified lines
1489 case RPC_GSS_PROC_DESTROY:1489 case RPC_GSS_PROC_DESTROY:
1490 if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq))1490 if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq))
1491 goto auth_err;1491 goto auth_err;
1492 rsci->h.expiry_time = get_seconds();1492 rsci->h.expiry_time = seconds_since_boot();
1493 set_bit(CACHE_NEGATIVE, &rsci->h.flags);1493 set_bit(CACHE_NEGATIVE, &rsci->h.flags);
1494 if (resv->iov_len + 4 > PAGE_SIZE)1494 if (resv->iov_len + 4 > PAGE_SIZE)
1495 goto drop;1495 goto drop;
net/sunrpc/svc_xprt.c+7−3
@@ -799,6 +799,8 @@ static int svc_handle_xprt(struct svc_rqst *rqstp, struct svc_xprt *xprt) · 798 unmodified lines
799 799
800 if (test_bit(XPT_CLOSE, &xprt->xpt_flags)) {800 if (test_bit(XPT_CLOSE, &xprt->xpt_flags)) {
801 dprintk("svc_recv: found XPT_CLOSE\n");801 dprintk("svc_recv: found XPT_CLOSE\n");
802 if (test_and_clear_bit(XPT_KILL_TEMP, &xprt->xpt_flags))
803 xprt->xpt_ops->xpo_kill_temp_xprt(xprt);
802 svc_delete_xprt(xprt);804 svc_delete_xprt(xprt);
803 /* Leave XPT_BUSY set on the dead xprt: */805 /* Leave XPT_BUSY set on the dead xprt: */
804 goto out;806 goto out;
@@ -1020,9 +1022,11 @@ void svc_age_temp_xprts_now(struct svc_serv *serv, struct sockaddr *server_addr) · 215 unmodified lines
1020 le = to_be_closed.next;1022 le = to_be_closed.next;
1021 list_del_init(le);1023 list_del_init(le);
1022 xprt = list_entry(le, struct svc_xprt, xpt_list);1024 xprt = list_entry(le, struct svc_xprt, xpt_list);
1023 dprintk("svc_age_temp_xprts_now: closing %p\n", xprt);1025 set_bit(XPT_CLOSE, &xprt->xpt_flags);
1024 xprt->xpt_ops->xpo_kill_temp_xprt(xprt);1026 set_bit(XPT_KILL_TEMP, &xprt->xpt_flags);
1025 svc_close_xprt(xprt);1027 dprintk("svc_age_temp_xprts_now: queuing xprt %p for closing\n",
1028 xprt);
1029 svc_xprt_enqueue(xprt);
1026 }1030 }
1027}1031}
1028EXPORT_SYMBOL_GPL(svc_age_temp_xprts_now);1032EXPORT_SYMBOL_GPL(svc_age_temp_xprts_now);
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c+0−2
@@ -347,8 +347,6 @@ int rdma_read_chunk_frmr(struct svcxprt_rdma *xprt, · 346 unmodified lines
347 atomic_inc(&rdma_stat_read);347 atomic_inc(&rdma_stat_read);
348 return ret;348 return ret;
349 err:349 err:
350 ib_dma_unmap_sg(xprt->sc_cm_id->device,
351 frmr->sg, frmr->sg_nents, frmr->direction);
352 svc_rdma_put_context(ctxt, 0);350 svc_rdma_put_context(ctxt, 0);
353 svc_rdma_put_frmr(xprt, frmr);351 svc_rdma_put_frmr(xprt, frmr);
354 return ret;352 return ret;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t