123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- From a99708737f566c70651015332e89d0d3b1eb5529 Mon Sep 17 00:00:00 2001
- From: Koen Vandeputte <[email protected]>
- Date: Mon, 17 Sep 2018 10:13:09 +0200
- Subject: [PATCH] Revert "ubifs: xattr: Don't operate on deleted inodes"
- This reverts commit 8a23348d76a1e7716da6e76383281ac82fc071cf.
- UBIFS wants to assert that xattr operations are only issued on files
- with positive link count. The said patch made this operations return
- -ENOENT for unlinked files such that the asserts will no longer trigger.
- This was wrong since xattr operations are perfectly fine on unlinked
- files.
- Instead the assertions need to be fixed/removed.
- Fixes: 11a6fc3dc743 ("ubifs: xattr: Don't operate on deleted inodes")
- Reported-by: Koen Vandeputte <[email protected]>
- Signed-off-by: Richard Weinberger <[email protected]>
- ---
- fs/ubifs/xattr.c | 24 ------------------------
- 1 file changed, 24 deletions(-)
- --- a/fs/ubifs/xattr.c
- +++ b/fs/ubifs/xattr.c
- @@ -152,12 +152,6 @@ static int create_xattr(struct ubifs_inf
- ui->data_len = size;
-
- mutex_lock(&host_ui->ui_mutex);
- -
- - if (!host->i_nlink) {
- - err = -ENOENT;
- - goto out_noent;
- - }
- -
- host->i_ctime = current_time(host);
- host_ui->xattr_cnt += 1;
- host_ui->xattr_size += CALC_DENT_SIZE(fname_len(nm));
- @@ -189,7 +183,6 @@ out_cancel:
- host_ui->xattr_size -= CALC_XATTR_BYTES(size);
- host_ui->xattr_names -= fname_len(nm);
- host_ui->flags &= ~UBIFS_CRYPT_FL;
- -out_noent:
- mutex_unlock(&host_ui->ui_mutex);
- out_free:
- make_bad_inode(inode);
- @@ -241,12 +234,6 @@ static int change_xattr(struct ubifs_inf
- mutex_unlock(&ui->ui_mutex);
-
- mutex_lock(&host_ui->ui_mutex);
- -
- - if (!host->i_nlink) {
- - err = -ENOENT;
- - goto out_noent;
- - }
- -
- host->i_ctime = current_time(host);
- host_ui->xattr_size -= CALC_XATTR_BYTES(old_size);
- host_ui->xattr_size += CALC_XATTR_BYTES(size);
- @@ -268,7 +255,6 @@ static int change_xattr(struct ubifs_inf
- out_cancel:
- host_ui->xattr_size -= CALC_XATTR_BYTES(size);
- host_ui->xattr_size += CALC_XATTR_BYTES(old_size);
- -out_noent:
- mutex_unlock(&host_ui->ui_mutex);
- make_bad_inode(inode);
- out_free:
- @@ -497,12 +483,6 @@ static int remove_xattr(struct ubifs_inf
- return err;
-
- mutex_lock(&host_ui->ui_mutex);
- -
- - if (!host->i_nlink) {
- - err = -ENOENT;
- - goto out_noent;
- - }
- -
- host->i_ctime = current_time(host);
- host_ui->xattr_cnt -= 1;
- host_ui->xattr_size -= CALC_DENT_SIZE(fname_len(nm));
- @@ -522,7 +502,6 @@ out_cancel:
- host_ui->xattr_size += CALC_DENT_SIZE(fname_len(nm));
- host_ui->xattr_size += CALC_XATTR_BYTES(ui->data_len);
- host_ui->xattr_names += fname_len(nm);
- -out_noent:
- mutex_unlock(&host_ui->ui_mutex);
- ubifs_release_budget(c, &req);
- make_bad_inode(inode);
- @@ -562,9 +541,6 @@ static int ubifs_xattr_remove(struct ino
-
- ubifs_assert(inode_is_locked(host));
-
- - if (!host->i_nlink)
- - return -ENOENT;
- -
- if (fname_len(&nm) > UBIFS_MAX_NLEN)
- return -ENAMETOOLONG;
-
|