aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ubifs/xattr.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ubifs/xattr.c')
-rw-r--r--fs/ubifs/xattr.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/ubifs/xattr.c b/fs/ubifs/xattr.c
index bf18f7a0454..85b27226875 100644
--- a/fs/ubifs/xattr.c
+++ b/fs/ubifs/xattr.c
@@ -138,12 +138,11 @@ static int create_xattr(struct ubifs_info *c, struct inode *host,
138 ui = ubifs_inode(inode); 138 ui = ubifs_inode(inode);
139 ui->xattr = 1; 139 ui->xattr = 1;
140 ui->flags |= UBIFS_XATTR_FL; 140 ui->flags |= UBIFS_XATTR_FL;
141 ui->data = kmalloc(size, GFP_NOFS); 141 ui->data = kmemdup(value, size, GFP_NOFS);
142 if (!ui->data) { 142 if (!ui->data) {
143 err = -ENOMEM; 143 err = -ENOMEM;
144 goto out_free; 144 goto out_free;
145 } 145 }
146 memcpy(ui->data, value, size);
147 inode->i_size = ui->ui_size = size; 146 inode->i_size = ui->ui_size = size;
148 ui->data_len = size; 147 ui->data_len = size;
149 148
@@ -204,12 +203,11 @@ static int change_xattr(struct ubifs_info *c, struct inode *host,
204 return err; 203 return err;
205 204
206 kfree(ui->data); 205 kfree(ui->data);
207 ui->data = kmalloc(size, GFP_NOFS); 206 ui->data = kmemdup(value, size, GFP_NOFS);
208 if (!ui->data) { 207 if (!ui->data) {
209 err = -ENOMEM; 208 err = -ENOMEM;
210 goto out_free; 209 goto out_free;
211 } 210 }
212 memcpy(ui->data, value, size);
213 inode->i_size = ui->ui_size = size; 211 inode->i_size = ui->ui_size = size;
214 ui->data_len = size; 212 ui->data_len = size;
215 213