diff options
Diffstat (limited to 'include/linux/sunrpc/xdr.h')
| -rw-r--r-- | include/linux/sunrpc/xdr.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index 9e340fa23c06..c6b53d181bfa 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include <linux/uio.h> | 12 | #include <linux/uio.h> |
| 13 | #include <asm/byteorder.h> | 13 | #include <asm/byteorder.h> |
| 14 | #include <linux/scatterlist.h> | 14 | #include <linux/scatterlist.h> |
| 15 | #include <linux/smp_lock.h> | ||
| 15 | 16 | ||
| 16 | /* | 17 | /* |
| 17 | * Buffer adjustment | 18 | * Buffer adjustment |
| @@ -36,6 +37,21 @@ struct xdr_netobj { | |||
| 36 | typedef int (*kxdrproc_t)(void *rqstp, __be32 *data, void *obj); | 37 | typedef int (*kxdrproc_t)(void *rqstp, __be32 *data, void *obj); |
| 37 | 38 | ||
| 38 | /* | 39 | /* |
| 40 | * We're still requiring the BKL in the xdr code until it's been | ||
| 41 | * more carefully audited, at which point this wrapper will become | ||
| 42 | * unnecessary. | ||
| 43 | */ | ||
| 44 | static inline int rpc_call_xdrproc(kxdrproc_t xdrproc, void *rqstp, __be32 *data, void *obj) | ||
| 45 | { | ||
| 46 | int ret; | ||
| 47 | |||
| 48 | lock_kernel(); | ||
| 49 | ret = xdrproc(rqstp, data, obj); | ||
| 50 | unlock_kernel(); | ||
| 51 | return ret; | ||
| 52 | } | ||
| 53 | |||
| 54 | /* | ||
| 39 | * Basic structure for transmission/reception of a client XDR message. | 55 | * Basic structure for transmission/reception of a client XDR message. |
| 40 | * Features a header (for a linear buffer containing RPC headers | 56 | * Features a header (for a linear buffer containing RPC headers |
| 41 | * and the data payload for short messages), and then an array of | 57 | * and the data payload for short messages), and then an array of |
