-----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEq1nRK9aeMoq1VSgcnJ2qBz9kQNkFAmHz0I4ACgkQnJ2qBz9k QNkvkAf/fD0swq13rFWiMDo+Azj9BwdjTeK7kEhGBCw9rL3BchH+OTMgPmcdplTJ uzXVyWZ98hsCBY4Aclu3Grcy1Cj9A3+JW9FqrWbwWy8t583DuaV31UL99AXb/4sH xYAmMm9V9gO5ckIAffHzHcEyN+dHMj89zl8vAtxGnlwR6gZLE1wjB3AmWBlctJpE bWQWCpuJsW+7o7ky5hIQ2hQWLxb5OejdYtLu6Su4tM86xfMwi3pB0tzilJ6jorAH eH5LBt5pVDI+gYQY1WYoZTy4eQKM0lhVW3WplhbNJwkJUupNS5xCXFfwB8bUppwc +hyGn5G3GJZ2Ya+xALO3GfS8fX9ESQ== =dQRa -----END PGP SIGNATURE----- Merge tag 'fs_for_v5.17-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs Pull udf and quota fixes from Jan Kara: "Fixes for crashes in UDF when inode expansion fails and one quota cleanup" * tag 'fs_for_v5.17-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs: quota: cleanup double word in comment udf: Restore i_lenAlloc when inode expansion fails udf: Fix NULL ptr deref when converting from inline format
This commit is contained in:
commit
c2b19fd753
|
@ -258,10 +258,6 @@ int udf_expand_file_adinicb(struct inode *inode)
|
|||
char *kaddr;
|
||||
struct udf_inode_info *iinfo = UDF_I(inode);
|
||||
int err;
|
||||
struct writeback_control udf_wbc = {
|
||||
.sync_mode = WB_SYNC_NONE,
|
||||
.nr_to_write = 1,
|
||||
};
|
||||
|
||||
WARN_ON_ONCE(!inode_is_locked(inode));
|
||||
if (!iinfo->i_lenAlloc) {
|
||||
|
@ -305,8 +301,10 @@ int udf_expand_file_adinicb(struct inode *inode)
|
|||
iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG;
|
||||
/* from now on we have normal address_space methods */
|
||||
inode->i_data.a_ops = &udf_aops;
|
||||
set_page_dirty(page);
|
||||
unlock_page(page);
|
||||
up_write(&iinfo->i_data_sem);
|
||||
err = inode->i_data.a_ops->writepage(page, &udf_wbc);
|
||||
err = filemap_fdatawrite(inode->i_mapping);
|
||||
if (err) {
|
||||
/* Restore everything back so that we don't lose data... */
|
||||
lock_page(page);
|
||||
|
@ -317,6 +315,7 @@ int udf_expand_file_adinicb(struct inode *inode)
|
|||
unlock_page(page);
|
||||
iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB;
|
||||
inode->i_data.a_ops = &udf_adinicb_aops;
|
||||
iinfo->i_lenAlloc = inode->i_size;
|
||||
up_write(&iinfo->i_data_sem);
|
||||
}
|
||||
put_page(page);
|
||||
|
|
|
@ -91,7 +91,7 @@ extern bool qid_valid(struct kqid qid);
|
|||
*
|
||||
* When there is no mapping defined for the user-namespace, type,
|
||||
* qid tuple an invalid kqid is returned. Callers are expected to
|
||||
* test for and handle handle invalid kqids being returned.
|
||||
* test for and handle invalid kqids being returned.
|
||||
* Invalid kqids may be tested for using qid_valid().
|
||||
*/
|
||||
static inline struct kqid make_kqid(struct user_namespace *from,
|
||||
|
|
Loading…
Reference in New Issue