Commit e4aa67b0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

Pull jfs updates from David Kleikamp:
 "JFS fixes for 5.14"

* tag 'jfs-5.14' of git://github.com/kleikamp/linux-shaggy:
  jfs: Avoid field-overflowing memcpy()
  jfs: remove unnecessary oom message
  jfs: fix GPF in diFree
  fs/jfs: Fix missing error code in lmLogInit()
  jfs: Remove trailing semicolon in macros
  fs: Fix typo issue
parents ced4cca7 5d299f44
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ void jfs_evict_inode(struct inode *inode)
			if (test_cflag(COMMIT_Freewmap, inode))
				jfs_free_zero_link(inode);

			if (JFS_SBI(inode->i_sb)->ipimap)
				diFree(inode);

			/*
+10 −4
Original line number Diff line number Diff line
@@ -101,7 +101,6 @@ struct dinode {
					u8 unused[16];	/* 16: */
					dxd_t _dxd;	/* 16: */
					union {
						__le32 _rdev;	/* 4: */
						/*
						 * The fast symlink area
						 * is expected to overflow
@@ -109,9 +108,15 @@ struct dinode {
						 * needed (which will clear
						 * INLINEEA).
						 */
						struct {
							union {
								__le32 _rdev;	/* 4: */
								u8 _fastsymlink[128];
							} _u;
							u8 _inlineea[128];
						};
						u8 _inline_all[256];
					};
				} _special;
			} _u2;
		} _file;
@@ -122,6 +127,7 @@ struct dinode {
#define di_rdev		u._file._u2._special._u._rdev
#define di_fastsymlink	u._file._u2._special._u._fastsymlink
#define di_inlineea	u._file._u2._special._inlineea
#define di_inline_all	u._file._u2._special._inline_all
	} u;
};

+1 −1
Original line number Diff line number Diff line
@@ -3660,7 +3660,7 @@ void dbFinalizeBmap(struct inode *ipbmap)
	 * (the leftmost ag with average free space in it);
	 */
//agpref:
	/* get the number of active ags and inacitve ags */
	/* get the number of active ags and inactive ags */
	actags = bmp->db_maxag + 1;
	inactags = bmp->db_numag - actags;
	ag_rem = bmp->db_mapsize & (bmp->db_agsize - 1);	/* ??? */
+3 −5
Original line number Diff line number Diff line
@@ -103,10 +103,8 @@ int diMount(struct inode *ipimap)
	 */
	/* allocate the in-memory inode map control structure. */
	imap = kmalloc(sizeof(struct inomap), GFP_KERNEL);
	if (imap == NULL) {
		jfs_err("diMount: kmalloc returned NULL!");
	if (imap == NULL)
		return -ENOMEM;
	}

	/* read the on-disk inode map control structure. */

@@ -763,7 +761,7 @@ int diWrite(tid_t tid, struct inode *ip)
		lv = & dilinelock->lv[dilinelock->index];
		lv->offset = (dioffset + 2 * 128) >> L2INODESLOTSIZE;
		lv->length = 2;
		memcpy(&dp->di_fastsymlink, jfs_ip->i_inline, IDATASIZE);
		memcpy(&dp->di_inline_all, jfs_ip->i_inline_all, IDATASIZE);
		dilinelock->index++;
	}
	/*
@@ -3084,7 +3082,7 @@ static int copy_from_dinode(struct dinode * dip, struct inode *ip)
	}

	if (S_ISDIR(ip->i_mode)) {
		memcpy(&jfs_ip->i_dirtable, &dip->di_dirtable, 384);
		memcpy(&jfs_ip->u.dir, &dip->u._dir, 384);
	} else if (S_ISREG(ip->i_mode) || S_ISLNK(ip->i_mode)) {
		memcpy(&jfs_ip->i_xtroot, &dip->di_xtroot, 288);
	} else
+10 −2
Original line number Diff line number Diff line
@@ -77,11 +77,18 @@ struct jfs_inode_info {
			unchar _unused[16];	/* 16: */
			dxd_t _dxd;		/* 16: */
			/* _inline may overflow into _inline_ea when needed */
			unchar _inline[128];	/* 128: inline symlink */
			/* _inline_ea may overlay the last part of
			 * file._xtroot if maxentry = XTROOTINITSLOT
			 */
			unchar _inline_ea[128];	/* 128: inline extended attr */
			union {
				struct {
					/* 128: inline symlink */
					unchar _inline[128];
					/* 128: inline extended attr */
					unchar _inline_ea[128];
				};
				unchar _inline_all[256];
			};
		} link;
	} u;
#ifdef CONFIG_QUOTA
@@ -96,6 +103,7 @@ struct jfs_inode_info {
#define i_dtroot u.dir._dtroot
#define i_inline u.link._inline
#define i_inline_ea u.link._inline_ea
#define i_inline_all u.link._inline_all

#define IREAD_LOCK(ip, subclass) \
	down_read_nested(&JFS_IP(ip)->rdwrlock, subclass)
Loading