Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

+5 -6
+4 -5
fs/udf/inode.c
··· 258 258 char *kaddr; 259 259 struct udf_inode_info *iinfo = UDF_I(inode); 260 260 int err; 261 - struct writeback_control udf_wbc = { 262 - .sync_mode = WB_SYNC_NONE, 263 - .nr_to_write = 1, 264 - }; 265 261 266 262 WARN_ON_ONCE(!inode_is_locked(inode)); 267 263 if (!iinfo->i_lenAlloc) { ··· 301 305 iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG; 302 306 /* from now on we have normal address_space methods */ 303 307 inode->i_data.a_ops = &udf_aops; 308 + set_page_dirty(page); 309 + unlock_page(page); 304 310 up_write(&iinfo->i_data_sem); 305 - err = inode->i_data.a_ops->writepage(page, &udf_wbc); 311 + err = filemap_fdatawrite(inode->i_mapping); 306 312 if (err) { 307 313 /* Restore everything back so that we don't lose data... */ 308 314 lock_page(page); ··· 315 317 unlock_page(page); 316 318 iinfo->i_alloc_type = ICBTAG_FLAG_AD_IN_ICB; 317 319 inode->i_data.a_ops = &udf_adinicb_aops; 320 + iinfo->i_lenAlloc = inode->i_size; 318 321 up_write(&iinfo->i_data_sem); 319 322 } 320 323 put_page(page);
+1 -1
include/linux/quota.h
··· 91 91 * 92 92 * When there is no mapping defined for the user-namespace, type, 93 93 * qid tuple an invalid kqid is returned. Callers are expected to 94 - * test for and handle handle invalid kqids being returned. 94 + * test for and handle invalid kqids being returned. 95 95 * Invalid kqids may be tested for using qid_valid(). 96 96 */ 97 97 static inline struct kqid make_kqid(struct user_namespace *from,