net/mlx4: Fix firmware command timeout during interrupt test
[cascardo/linux.git] / fs / ubifs / xattr.c
index 11a0041..6c2f4d4 100644 (file)
@@ -200,6 +200,7 @@ static int change_xattr(struct ubifs_info *c, struct inode *host,
        struct ubifs_inode *host_ui = ubifs_inode(host);
        struct ubifs_inode *ui = ubifs_inode(inode);
        void *buf = NULL;
+       int old_size;
        struct ubifs_budget_req req = { .dirtied_ino = 2,
                .dirtied_ino_d = ALIGN(size, 8) + ALIGN(host_ui->data_len, 8) };
 
@@ -217,12 +218,13 @@ static int change_xattr(struct ubifs_info *c, struct inode *host,
        kfree(ui->data);
        ui->data = buf;
        inode->i_size = ui->ui_size = size;
+       old_size = ui->data_len;
        ui->data_len = size;
        mutex_unlock(&ui->ui_mutex);
 
        mutex_lock(&host_ui->ui_mutex);
        host->i_ctime = ubifs_current_time(host);
-       host_ui->xattr_size -= CALC_XATTR_BYTES(ui->data_len);
+       host_ui->xattr_size -= CALC_XATTR_BYTES(old_size);
        host_ui->xattr_size += CALC_XATTR_BYTES(size);
 
        /*
@@ -241,7 +243,7 @@ static int change_xattr(struct ubifs_info *c, struct inode *host,
 
 out_cancel:
        host_ui->xattr_size -= CALC_XATTR_BYTES(size);
-       host_ui->xattr_size += CALC_XATTR_BYTES(ui->data_len);
+       host_ui->xattr_size += CALC_XATTR_BYTES(old_size);
        mutex_unlock(&host_ui->ui_mutex);
        make_bad_inode(inode);
 out_free: