diff options
-rw-r--r-- | fs/nfsd/fault_inject.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/nfsd/fault_inject.c b/fs/nfsd/fault_inject.c index 2ed05c3cd43d..f1333fc35b33 100644 --- a/fs/nfsd/fault_inject.c +++ b/fs/nfsd/fault_inject.c | |||
@@ -115,11 +115,19 @@ static ssize_t fault_inject_write(struct file *file, const char __user *buf, | |||
115 | struct net *net = current->nsproxy->net_ns; | 115 | struct net *net = current->nsproxy->net_ns; |
116 | struct sockaddr_storage sa; | 116 | struct sockaddr_storage sa; |
117 | u64 val; | 117 | u64 val; |
118 | char *nl; | ||
118 | 119 | ||
119 | if (copy_from_user(write_buf, buf, size)) | 120 | if (copy_from_user(write_buf, buf, size)) |
120 | return -EFAULT; | 121 | return -EFAULT; |
121 | write_buf[size] = '\0'; | 122 | write_buf[size] = '\0'; |
122 | 123 | ||
124 | /* Deal with any embedded newlines in the string */ | ||
125 | nl = strchr(write_buf, '\n'); | ||
126 | if (nl) { | ||
127 | size = nl - write_buf; | ||
128 | *nl = '\0'; | ||
129 | } | ||
130 | |||
123 | size = rpc_pton(net, write_buf, size, (struct sockaddr *)&sa, sizeof(sa)); | 131 | size = rpc_pton(net, write_buf, size, (struct sockaddr *)&sa, sizeof(sa)); |
124 | if (size > 0) | 132 | if (size > 0) |
125 | nfsd_inject_set_client(file_inode(file)->i_private, &sa, size); | 133 | nfsd_inject_set_client(file_inode(file)->i_private, &sa, size); |