diff options
Diffstat (limited to 'fs/ceph/xattr.c')
-rw-r--r-- | fs/ceph/xattr.c | 3 |
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 | } |