mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 15:14:18 +08:00
This pull request contains fixes for UBIFS:
- A wrong UBIFS assertion in mount code - Fix for a NULL pointer deref in mount code - Revert of a bad fix for xattrs -----BEGIN PGP SIGNATURE----- iQJKBAABCAA0FiEEdgfidid8lnn52cLTZvlZhesYu8EFAlukuf8WHHJpY2hhcmRA c2lnbWEtc3Rhci5hdAAKCRBm+VmF6xi7wRnyD/40jc4PA1pP3dJcXqdqwSeN+vJZ YWu307rE+giWWg6vRKa8zu3z614579UC7EE/I9miSrPNPYCi9VTLNzJGNMvn8aSf 8seMrbhW0kz29T4YZ5fESr6x3hMsSdmIWZkPobruul8oBGmNcUm3Ag3MBM4XbQTm 5AcWUdXVQUXPROK/Xm04hNa5pJ6wkSu5CxA+mf9YM2ZYYPPdCblxxq3NsDX99vDw gZup7JndSzpk+IpZMQIEKUP83vh5YgCU06YPjXi5YIfXl+sQnpH0fyrWm3+1C0Yz 4T80rd3fm+7+obXdAI29mhcoZ09fGayozfqjU/fV3edW43+pUvRWced13vuLqz9Q JannCFeN+v/nB6OPlj4JGkgNunZ5M3r6ZZIQBbY9RJuZgG0/FMbpYb62RY1z/jg9 YA7e3J/R02i7tHnPbcIz6ngKE0c42VKxTdATaybXVunx5ZPip7txj9OeJbfIYUrr CbLMdiqIJUAAheHMUrTiF3jDNwEiMhBZA4dAGDvLmpLuyfMlN8Lwje9BdRd5VNKp zwEGUQkDWLxniFYLtmbceFSa4IQT6z70XJn1pqdDvgjxfp8trEqhtp9GMxA2u6TA adcug5gUzRWMQ2QuyoKIv6tkjmnII5N2KzhZH9hwBReRJUlKY9WQ9jowcGrPXhbw F2prIwBxp8drneOeKg== =CGLq -----END PGP SIGNATURE----- Merge tag 'upstream-4.19-rc4' of git://git.infradead.org/linux-ubifs Richard writes: "This pull request contains fixes for UBIFS: - A wrong UBIFS assertion in mount code - Fix for a NULL pointer deref in mount code - Revert of a bad fix for xattrs" * tag 'upstream-4.19-rc4' of git://git.infradead.org/linux-ubifs: Revert "ubifs: xattr: Don't operate on deleted inodes" ubifs: drop false positive assertion ubifs: Check for name being NULL while mounting
This commit is contained in:
commit
0eba8697bc
@ -1912,7 +1912,9 @@ static int ubifs_remount_fs(struct super_block *sb, int *flags, char *data)
|
||||
mutex_unlock(&c->bu_mutex);
|
||||
}
|
||||
|
||||
ubifs_assert(c, c->lst.taken_empty_lebs > 0);
|
||||
if (!c->need_recovery)
|
||||
ubifs_assert(c, c->lst.taken_empty_lebs > 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1954,6 +1956,9 @@ static struct ubi_volume_desc *open_ubi(const char *name, int mode)
|
||||
int dev, vol;
|
||||
char *endptr;
|
||||
|
||||
if (!name || !*name)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
/* First, try to open using the device node path method */
|
||||
ubi = ubi_open_volume_path(name, mode);
|
||||
if (!IS_ERR(ubi))
|
||||
|
@ -152,12 +152,6 @@ static int create_xattr(struct ubifs_info *c, struct inode *host,
|
||||
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));
|
||||
@ -190,7 +184,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);
|
||||
@ -242,12 +235,6 @@ static int change_xattr(struct ubifs_info *c, struct inode *host,
|
||||
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);
|
||||
@ -269,7 +256,6 @@ 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(old_size);
|
||||
out_noent:
|
||||
mutex_unlock(&host_ui->ui_mutex);
|
||||
make_bad_inode(inode);
|
||||
out_free:
|
||||
@ -496,12 +482,6 @@ static int remove_xattr(struct ubifs_info *c, struct inode *host,
|
||||
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));
|
||||
@ -521,7 +501,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);
|
||||
@ -561,9 +540,6 @@ static int ubifs_xattr_remove(struct inode *host, const char *name)
|
||||
|
||||
ubifs_assert(c, inode_is_locked(host));
|
||||
|
||||
if (!host->i_nlink)
|
||||
return -ENOENT;
|
||||
|
||||
if (fname_len(&nm) > UBIFS_MAX_NLEN)
|
||||
return -ENAMETOOLONG;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user