Skip to content

Commit 371c141

Browse files
committed
Merge tag 'jfs-6.11' of github.com:kleikamp/linux-shaggy
Pull jfs updates from David Kleikamp: "Folio conversion from Matthew Wilcox and a few various fixes" * tag 'jfs-6.11' of github.com:kleikamp/linux-shaggy: jfs: don't walk off the end of ealist jfs: Fix shift-out-of-bounds in dbDiscardAG jfs: Fix array-index-out-of-bounds in diFree jfs: fix null ptr deref in dtInsertEntry jfs: Remove use of folio error flag fs: Remove i_blocks_per_page jfs: Change metapage->page to metapage->folio jfs: Convert force_metapage to use a folio jfs: Convert inc_io to take a folio jfs: Convert page_to_mp to folio_to_mp jfs; Convert __invalidate_metapages to use a folio jfs: Convert dec_io to take a folio jfs: Convert drop_metapage and remove_metapage to take a folio jfs; Convert release_metapage to use a folio jfs: Convert insert_metapage() to take a folio jfs: Convert __get_metapage to use a folio jfs: Convert metapage_writepage to metapage_write_folio jfs: Convert metapage_read_folio to use folio APIs
2 parents ca83c61 + d0fa70a commit 371c141

File tree

8 files changed

+193
-179
lines changed

8 files changed

+193
-179
lines changed

fs/jfs/jfs_dmap.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1626,6 +1626,8 @@ s64 dbDiscardAG(struct inode *ip, int agno, s64 minlen)
16261626
} else if (rc == -ENOSPC) {
16271627
/* search for next smaller log2 block */
16281628
l2nb = BLKSTOL2(nblocks) - 1;
1629+
if (unlikely(l2nb < 0))
1630+
break;
16291631
nblocks = 1LL << l2nb;
16301632
} else {
16311633
/* Trim any already allocated blocks */

fs/jfs/jfs_dtree.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,8 @@ int dtInsert(tid_t tid, struct inode *ip,
834834
* the full page.
835835
*/
836836
DT_GETSEARCH(ip, btstack->top, bn, mp, p, index);
837+
if (p->header.freelist == 0)
838+
return -EINVAL;
837839

838840
/*
839841
* insert entry for new key

fs/jfs/jfs_imap.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ int diSync(struct inode *ipimap)
290290
int diRead(struct inode *ip)
291291
{
292292
struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb);
293-
int iagno, ino, extno, rc;
293+
int iagno, ino, extno, rc, agno;
294294
struct inode *ipimap;
295295
struct dinode *dp;
296296
struct iag *iagp;
@@ -339,8 +339,11 @@ int diRead(struct inode *ip)
339339

340340
/* get the ag for the iag */
341341
agstart = le64_to_cpu(iagp->agstart);
342+
agno = BLKTOAG(agstart, JFS_SBI(ip->i_sb));
342343

343344
release_metapage(mp);
345+
if (agno >= MAXAG || agno < 0)
346+
return -EIO;
344347

345348
rel_inode = (ino & (INOSPERPAGE - 1));
346349
pageno = blkno >> sbi->l2nbperpage;

fs/jfs/jfs_logmgr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1600,7 +1600,7 @@ void jfs_flush_journal(struct jfs_log *log, int wait)
16001600
mp, sizeof(struct metapage), 0);
16011601
print_hex_dump(KERN_ERR, "page: ",
16021602
DUMP_PREFIX_ADDRESS, 16,
1603-
sizeof(long), mp->page,
1603+
sizeof(long), mp->folio,
16041604
sizeof(struct page), 0);
16051605
} else
16061606
print_hex_dump(KERN_ERR, "tblock:",

0 commit comments

Comments
 (0)