Skip to content

Commit 5cb08b6

Browse files
committed
Merge tag 'jfs-6.18' of github.com:kleikamp/linux-shaggy
Pull jfs updates from Dave Kleikamp: "A few fixes and cleanups for JFS" * tag 'jfs-6.18' of github.com:kleikamp/linux-shaggy: jfs: replace hardcoded magic number with DTPAGEMAXSLOT constant JFS: Remove redundant 0 value initialization JFS: Remove unnecessary parentheses jfs: fix uninitialized waitqueue in transaction manager jfs: Verify inode mode when loading from disk
2 parents 65989db + cafc667 commit 5cb08b6

5 files changed

Lines changed: 19 additions & 13 deletions

File tree

fs/jfs/inode.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,15 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino)
5959
*/
6060
inode->i_link[inode->i_size] = '\0';
6161
}
62-
} else {
62+
} else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) ||
63+
S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {
6364
inode->i_op = &jfs_file_inode_operations;
6465
init_special_inode(inode, inode->i_mode, inode->i_rdev);
66+
} else {
67+
printk(KERN_DEBUG "JFS: Invalid file type 0%04o for inode %lu.\n",
68+
inode->i_mode, inode->i_ino);
69+
iget_failed(inode);
70+
return ERR_PTR(-EIO);
6571
}
6672
unlock_new_inode(inode);
6773
return inode;

fs/jfs/jfs_dtree.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2903,7 +2903,7 @@ int jfs_readdir(struct file *file, struct dir_context *ctx)
29032903
stbl = DT_GETSTBL(p);
29042904

29052905
for (i = index; i < p->header.nextindex; i++) {
2906-
if (stbl[i] < 0 || stbl[i] > 127) {
2906+
if (stbl[i] < 0 || stbl[i] >= DTPAGEMAXSLOT) {
29072907
jfs_err("JFS: Invalid stbl[%d] = %d for inode %ld, block = %lld",
29082908
i, stbl[i], (long)ip->i_ino, (long long)bn);
29092909
free_page(dirent_buf);
@@ -3108,7 +3108,7 @@ static int dtReadFirst(struct inode *ip, struct btstack * btstack)
31083108
/* get the leftmost entry */
31093109
stbl = DT_GETSTBL(p);
31103110

3111-
if (stbl[0] < 0 || stbl[0] > 127) {
3111+
if (stbl[0] < 0 || stbl[0] >= DTPAGEMAXSLOT) {
31123112
DT_PUTPAGE(mp);
31133113
jfs_error(ip->i_sb, "stbl[0] out of bound\n");
31143114
return -EIO;

fs/jfs/jfs_logmgr.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1199,7 +1199,6 @@ static int open_dummy_log(struct super_block *sb)
11991199
init_waitqueue_head(&dummy_log->syncwait);
12001200
dummy_log->no_integrity = 1;
12011201
/* Make up some stuff */
1202-
dummy_log->base = 0;
12031202
dummy_log->size = 1024;
12041203
rc = lmLogInit(dummy_log);
12051204
if (rc) {

fs/jfs/jfs_mount.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -325,13 +325,13 @@ static int chkSuper(struct super_block *sb)
325325
if ((j_sb->s_flag & cpu_to_le32(JFS_BAD_SAIT)) !=
326326
cpu_to_le32(JFS_BAD_SAIT)) {
327327
expected_AIM_bytesize = 2 * PSIZE;
328-
AIM_bytesize = lengthPXD(&(j_sb->s_aim2)) * bsize;
328+
AIM_bytesize = lengthPXD(&j_sb->s_aim2) * bsize;
329329
expected_AIT_bytesize = 4 * PSIZE;
330-
AIT_bytesize = lengthPXD(&(j_sb->s_ait2)) * bsize;
331-
AIM_byte_addr = addressPXD(&(j_sb->s_aim2)) * bsize;
332-
AIT_byte_addr = addressPXD(&(j_sb->s_ait2)) * bsize;
330+
AIT_bytesize = lengthPXD(&j_sb->s_ait2) * bsize;
331+
AIM_byte_addr = addressPXD(&j_sb->s_aim2) * bsize;
332+
AIT_byte_addr = addressPXD(&j_sb->s_ait2) * bsize;
333333
byte_addr_diff0 = AIT_byte_addr - AIM_byte_addr;
334-
fsckwsp_addr = addressPXD(&(j_sb->s_fsckpxd)) * bsize;
334+
fsckwsp_addr = addressPXD(&j_sb->s_fsckpxd) * bsize;
335335
byte_addr_diff1 = fsckwsp_addr - AIT_byte_addr;
336336
if ((AIM_bytesize != expected_AIM_bytesize) ||
337337
(AIT_bytesize != expected_AIT_bytesize) ||

fs/jfs/jfs_txnmgr.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -272,14 +272,15 @@ int txInit(void)
272272
if (TxBlock == NULL)
273273
return -ENOMEM;
274274

275-
for (k = 1; k < nTxBlock - 1; k++) {
276-
TxBlock[k].next = k + 1;
275+
for (k = 0; k < nTxBlock; k++) {
277276
init_waitqueue_head(&TxBlock[k].gcwait);
278277
init_waitqueue_head(&TxBlock[k].waitor);
279278
}
279+
280+
for (k = 1; k < nTxBlock - 1; k++) {
281+
TxBlock[k].next = k + 1;
282+
}
280283
TxBlock[k].next = 0;
281-
init_waitqueue_head(&TxBlock[k].gcwait);
282-
init_waitqueue_head(&TxBlock[k].waitor);
283284

284285
TxAnchor.freetid = 1;
285286
init_waitqueue_head(&TxAnchor.freewait);

0 commit comments

Comments
 (0)