aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ceph/xattr.c')
-rw-r--r--fs/ceph/xattr.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c
index 819163d8313b..b24275ef97f7 100644
--- a/fs/ceph/xattr.c
+++ b/fs/ceph/xattr.c
@@ -369,6 +369,7 @@ static int __set_xattr(struct ceph_inode_info *ci,
369 369
370 if (update_xattr) { 370 if (update_xattr) {
371 int err = 0; 371 int err = 0;
372
372 if (xattr && (flags & XATTR_CREATE)) 373 if (xattr && (flags & XATTR_CREATE))
373 err = -EEXIST; 374 err = -EEXIST;
374 else if (!xattr && (flags & XATTR_REPLACE)) 375 else if (!xattr && (flags & XATTR_REPLACE))
@@ -376,12 +377,14 @@ static int __set_xattr(struct ceph_inode_info *ci,
376 if (err) { 377 if (err) {
377 kfree(name); 378 kfree(name);
378 kfree(val); 379 kfree(val);
380 kfree(*newxattr);
379 return err; 381 return err;
380 } 382 }
381 if (update_xattr < 0) { 383 if (update_xattr < 0) {
382 if (xattr) 384 if (xattr)
383 __remove_xattr(ci, xattr); 385 __remove_xattr(ci, xattr);
384 kfree(name); 386 kfree(name);
387 kfree(*newxattr);
385 return 0; 388 return 0;
386 } 389 }
387 } 390 }