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

Merge tag 'jfs-6.5' of github.com:kleikamp/linux-shaggy

Pull jfs updates from David Kleikamp:
"Minor bug fixes and cleanups"

* tag 'jfs-6.5' of github.com:kleikamp/linux-shaggy:
FS: JFS: Check for read-only mounted filesystem in txBegin
FS: JFS: Fix null-ptr-deref Read in txBegin
fs: jfs: Fix UBSAN: array-index-out-of-bounds in dbAllocDmapLev
fs: jfs: (trivial) Fix typo in dbInitTree function
jfs: jfs_dmap: Validate db_l2nbperpage while mounting

+22 -1
+10 -1
fs/jfs/jfs_dmap.c
··· 178 178 dbmp_le = (struct dbmap_disk *) mp->data; 179 179 bmp->db_mapsize = le64_to_cpu(dbmp_le->dn_mapsize); 180 180 bmp->db_nfree = le64_to_cpu(dbmp_le->dn_nfree); 181 + 181 182 bmp->db_l2nbperpage = le32_to_cpu(dbmp_le->dn_l2nbperpage); 183 + if (bmp->db_l2nbperpage > L2PSIZE - L2MINBLOCKSIZE) { 184 + err = -EINVAL; 185 + goto err_release_metapage; 186 + } 187 + 182 188 bmp->db_numag = le32_to_cpu(dbmp_le->dn_numag); 183 189 if (!bmp->db_numag) { 184 190 err = -EINVAL; ··· 1958 1952 */ 1959 1953 if (dbFindLeaf((dmtree_t *) & dp->tree, l2nb, &leafidx)) 1960 1954 return -ENOSPC; 1955 + 1956 + if (leafidx < 0) 1957 + return -EIO; 1961 1958 1962 1959 /* determine the block number within the file system corresponding 1963 1960 * to the leaf at which free space was found. ··· 3860 3851 l2max = le32_to_cpu(dtp->l2nleafs) + dtp->budmin; 3861 3852 3862 3853 /* 3863 - * configure the leaf levevl into binary buddy system 3854 + * configure the leaf level into binary buddy system 3864 3855 * 3865 3856 * Try to combine buddies starting with a buddy size of 1 3866 3857 * (i.e. two leaves). At a buddy size of 1 two buddy leaves
+2
fs/jfs/jfs_filsys.h
··· 122 122 #define NUM_INODE_PER_IAG INOSPERIAG 123 123 124 124 #define MINBLOCKSIZE 512 125 + #define L2MINBLOCKSIZE 9 125 126 #define MAXBLOCKSIZE 4096 127 + #define L2MAXBLOCKSIZE 12 126 128 #define MAXFILESIZE ((s64)1 << 52) 127 129 128 130 #define JFS_LINK_MAX 0xffffffff
+5
fs/jfs/jfs_txnmgr.c
··· 354 354 jfs_info("txBegin: flag = 0x%x", flag); 355 355 log = JFS_SBI(sb)->log; 356 356 357 + if (!log) { 358 + jfs_error(sb, "read-only filesystem\n"); 359 + return 0; 360 + } 361 + 357 362 TXN_LOCK(); 358 363 359 364 INCREMENT(TxStat.txBegin);
+5
fs/jfs/namei.c
··· 799 799 if (rc) 800 800 goto out; 801 801 802 + if (isReadOnly(ip)) { 803 + jfs_error(ip->i_sb, "read-only filesystem\n"); 804 + return -EROFS; 805 + } 806 + 802 807 tid = txBegin(ip->i_sb, 0); 803 808 804 809 mutex_lock_nested(&JFS_IP(dir)->commit_mutex, COMMIT_MUTEX_PARENT);