| .. | .. |
|---|
| 73 | 73 | atomic_t rdma_stat_sq_poll; |
|---|
| 74 | 74 | atomic_t rdma_stat_sq_prod; |
|---|
| 75 | 75 | |
|---|
| 76 | | -struct workqueue_struct *svc_rdma_wq; |
|---|
| 77 | | - |
|---|
| 78 | 76 | /* |
|---|
| 79 | 77 | * This function implements reading and resetting an atomic_t stat |
|---|
| 80 | 78 | * variable through read/write to a proc file. Any write to the file |
|---|
| .. | .. |
|---|
| 82 | 80 | * current value. |
|---|
| 83 | 81 | */ |
|---|
| 84 | 82 | static int read_reset_stat(struct ctl_table *table, int write, |
|---|
| 85 | | - void __user *buffer, size_t *lenp, |
|---|
| 86 | | - loff_t *ppos) |
|---|
| 83 | + void *buffer, size_t *lenp, loff_t *ppos) |
|---|
| 87 | 84 | { |
|---|
| 88 | 85 | atomic_t *stat = (atomic_t *)table->data; |
|---|
| 89 | 86 | |
|---|
| .. | .. |
|---|
| 105 | 102 | len -= *ppos; |
|---|
| 106 | 103 | if (len > *lenp) |
|---|
| 107 | 104 | len = *lenp; |
|---|
| 108 | | - if (len && copy_to_user(buffer, str_buf, len)) |
|---|
| 109 | | - return -EFAULT; |
|---|
| 105 | + if (len) |
|---|
| 106 | + memcpy(buffer, str_buf, len); |
|---|
| 110 | 107 | *lenp = len; |
|---|
| 111 | 108 | *ppos += len; |
|---|
| 112 | 109 | } |
|---|
| .. | .. |
|---|
| 230 | 227 | void svc_rdma_cleanup(void) |
|---|
| 231 | 228 | { |
|---|
| 232 | 229 | dprintk("SVCRDMA Module Removed, deregister RPC RDMA transport\n"); |
|---|
| 233 | | - destroy_workqueue(svc_rdma_wq); |
|---|
| 234 | 230 | if (svcrdma_table_header) { |
|---|
| 235 | 231 | unregister_sysctl_table(svcrdma_table_header); |
|---|
| 236 | 232 | svcrdma_table_header = NULL; |
|---|
| 237 | 233 | } |
|---|
| 238 | | -#if defined(CONFIG_SUNRPC_BACKCHANNEL) |
|---|
| 239 | | - svc_unreg_xprt_class(&svc_rdma_bc_class); |
|---|
| 240 | | -#endif |
|---|
| 241 | 234 | svc_unreg_xprt_class(&svc_rdma_class); |
|---|
| 242 | 235 | } |
|---|
| 243 | 236 | |
|---|
| .. | .. |
|---|
| 249 | 242 | dprintk("\tmax_bc_requests : %u\n", svcrdma_max_bc_requests); |
|---|
| 250 | 243 | dprintk("\tmax_inline : %d\n", svcrdma_max_req_size); |
|---|
| 251 | 244 | |
|---|
| 252 | | - svc_rdma_wq = alloc_workqueue("svc_rdma", 0, 0); |
|---|
| 253 | | - if (!svc_rdma_wq) |
|---|
| 254 | | - return -ENOMEM; |
|---|
| 255 | | - |
|---|
| 256 | 245 | if (!svcrdma_table_header) |
|---|
| 257 | 246 | svcrdma_table_header = |
|---|
| 258 | 247 | register_sysctl_table(svcrdma_root_table); |
|---|
| 259 | 248 | |
|---|
| 260 | 249 | /* Register RDMA with the SVC transport switch */ |
|---|
| 261 | 250 | svc_reg_xprt_class(&svc_rdma_class); |
|---|
| 262 | | -#if defined(CONFIG_SUNRPC_BACKCHANNEL) |
|---|
| 263 | | - svc_reg_xprt_class(&svc_rdma_bc_class); |
|---|
| 264 | | -#endif |
|---|
| 265 | 251 | return 0; |
|---|
| 266 | 252 | } |
|---|