From 1c7c01420d592e0e87e532ac688e61d5a2fafab2 Mon Sep 17 00:00:00 2001
From: Larry Dewey <ldewey@suse.com>
Date: Thu, 9 Jan 2020 14:36:45 -0700
Subject: [PATCH] libfs: Fixing issue with variable name collision

Due to the structure of the old code, variable name collisions were
occuring when building with the `-fno-common` flag. These changes fix
the problem.

[LD: BSC#1160272]

Signed-off-by: Larry Dewey <ldewey@suse.com>
---
 fscklog/display.c |   4 +-
 libfs/logredo.c   | 127 +++++++++++++++++++++++-----------------------
 2 files changed, 66 insertions(+), 65 deletions(-)

diff --git a/fscklog/display.c b/fscklog/display.c
index a33d44f..ecb48ca 100644
--- a/fscklog/display.c
+++ b/fscklog/display.c
@@ -54,7 +54,7 @@ FILE *infp;
  * output: fsck extracted service log I/O buffer
  *
  */
-char xchklog_buffer[XCHKLOG_BUFSIZE];
+char display_xchklog_buffer[XCHKLOG_BUFSIZE];
 
 /* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  *
@@ -98,7 +98,7 @@ int xchkdmp(struct fscklog_record *local_recptr)
 	 * Initialize the fscklog control block
 	 */
 	local_recptr->infile_buf_length = XCHKLOG_BUFSIZE;
-	local_recptr->infile_buf_ptr = xchklog_buffer;
+	local_recptr->infile_buf_ptr = display_xchklog_buffer;
 	local_recptr->highest_msg_num =
 	    fsck_highest_msgid_defined + JFSCHKLOG_FIRSTMSGNUM;
 
diff --git a/libfs/logredo.c b/libfs/logredo.c
index eb897e8..c9934db 100644
--- a/libfs/logredo.c
+++ b/libfs/logredo.c
@@ -87,9 +87,9 @@ int32_t bmap_stg_bytes = 0;
  *    S T U F F    F O R    T H E    L O G
  *
  */
-struct logsuper logsup;		/* log super block */
-int32_t numdoblk;		/* number of do blocks used     */
-int32_t numnodofile;		/* number of nodo file blocks used  */
+struct logsuper global_logsup;		/* log super block */
+int32_t logredo_numdoblk;		/* number of do blocks used     */
+int32_t logredo_numnodofile;		/* number of nodo file blocks used  */
 int32_t numExtDtPg = 0;		/* number of extended dtpage blocks used  */
 
 /*
@@ -129,7 +129,7 @@ int32_t use_2ndary_agg_superblock;
  */
 
 /* buffer header table */
-struct bufhdr {
+struct logredo_bufhdr {
 	int16_t next;		/* 2: next on free/lru list */
 	int16_t prev;		/* 2: previous on free/lru list */
 	int16_t hnext;		/* 2: next on hash chain */
@@ -139,27 +139,28 @@ struct bufhdr {
 	int16_t reserve;	/* 2 */
 	int32_t vol;		/* 4: minor of agrregate/lv number */
 	pxd_t pxd;		/* 8: on-disk page pxd */
-} bufhdr[NBUFPOOL];		/* (24) */
+} logredo_bufhdr[NBUFPOOL];		/* (24) */
 
 /* buffer table */
 struct bufpool {
 	char bytes[PSIZE];
-} buffer[NBUFPOOL - 1];
+} logredo_buffer[NBUFPOOL - 1];
 
 /*
  *      log page buffer cache
  *
  * log has its own 4 page buffer pool.
  */
-uint8_t afterdata[LOGPSIZE * 2];	/* buffer to read in redopage data */
+uint8_t logredo_afterdata[LOGPSIZE * 2];	/* buffer to read in redopage data */
 
 /*
  * Miscellaneous
  */
-caddr_t prog;			/* Program name */
-int32_t mntcnt, bufsize;
-char *mntinfo;
-int32_t retcode;		/* return code from logredo    */
+caddr_t logredo_prog;			/* Program name */
+extern int32_t mntcnt;
+int32_t logredo_bufsize;
+char *logredo_mntinfo;
+int32_t logredo_retcode;		/* return code from logredo    */
 int end_of_transaction = 0;
 
 /*
@@ -489,8 +490,8 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 	/*
 	 * loop until we get enough memory to read vmount struct
 	 */
-	mntinfo = (char *) &bufsize;
-	bufsize = sizeof (int);
+	logredo_mntinfo = (char *) &logredo_bufsize;
+	logredo_bufsize = sizeof (int);
 
 	/*
 	 * validate that the log is not currently in use;
@@ -517,21 +518,21 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 	rc = ujfs_rw_diskblocks(Log.fp,
 				(uint64_t) (Log.xaddr +
 					    LOGPNTOB(LOGSUPER_B)),
-				(unsigned) sizeof (struct logsuper), (char *) &logsup, GET);
+				(unsigned) sizeof (struct logsuper), (char *) &global_logsup, GET);
 	if (rc != 0) {
 		fsck_send_msg(lrdo_CANTREADLOGSUP);
 		rc = LOGSUPER_READ_ERROR;
 		goto error_out;
 	}
-	ujfs_swap_logsuper(&logsup);
+	ujfs_swap_logsuper(&global_logsup);
 
-	if (logsup.magic != LOGMAGIC) {
+	if (global_logsup.magic != LOGMAGIC) {
 		fsck_send_msg(lrdo_LOGSUPBADMGC);
 		rc = NOT_LOG_FILE_ERROR;
 		goto error_out;
 	}
 
-	if (logsup.version > LOGVERSION) {
+	if (global_logsup.version > LOGVERSION) {
 		fsck_send_msg(lrdo_LOGSUPBADVER);
 		rc = JFS_VERSION_ERROR;
 		goto error_out;
@@ -551,7 +552,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 		}
 	}
 
-	if (logsup.state == LOGREDONE) {
+	if (global_logsup.state == LOGREDONE) {
 		fsck_send_msg(lrdo_ALREADYREDONE);
 		if (Log.location & INLINELOG)
 			if ((rc = updateSuper(0)) != 0) {
@@ -561,8 +562,8 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 		return (0);
 	}
 
-	Log.size = logsup.size;
-	Log.serial = logsup.serial;
+	Log.size = global_logsup.size;
+	Log.serial = global_logsup.serial;
 
 	/*
 	 * find the end of log
@@ -574,10 +575,10 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 
 		fsck_send_msg(lrdo_LOGENDBAD1);
 		logError(LOGEND, 0);
-		ujfs_swap_logsuper(&logsup);
+		ujfs_swap_logsuper(&global_logsup);
 		rc = ujfs_rw_diskblocks(Log.fp,
 					(Log.xaddr + LOGPNTOB(LOGSUPER_B)),
-					(unsigned long) LOGPSIZE, (char *) &logsup, PUT);
+					(unsigned long) LOGPSIZE, (char *) &global_logsup, PUT);
 		rc = logend;
 		goto error_out;
 	}
@@ -592,7 +593,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 		goto error_out;
 	}
 
-	highest_lr_byte = logsup.size * LOGPSIZE - LOGRDSIZE;
+	highest_lr_byte = global_logsup.size * LOGPSIZE - LOGRDSIZE;
 
 	if ((logend < lowest_lr_byte) || (logend > highest_lr_byte)) {
 		fsck_send_msg(lrdo_LOGEND, logend);
@@ -614,7 +615,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 
 	do {
 		logaddr = nextaddr;
-		nextaddr = logRead(logaddr, &ld, afterdata);
+		nextaddr = logRead(logaddr, &ld, logredo_afterdata);
 		DBG_TRACE(("Logaddr=%x\nNextaddr=%x\n", logaddr, nextaddr))
 		    nlogrecords += 1;
 		/*
@@ -745,7 +746,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 		 */
 		if (end_of_transaction != 0) {
 			for (k = 1; k < NBUFPOOL; k++) {
-				if ((rc = bflush(k, &buffer[k - 1])) != 0)
+				if ((rc = bflush(k, &logredo_buffer[k - 1])) != 0)
 					goto error_out;
 			}
 			end_of_transaction = 0;
@@ -768,7 +769,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 	 * flush data page buffer cache
 	 */
 	for (k = 1; k < NBUFPOOL; k++) {
-		if ((rc = bflush(k, &buffer[k - 1])) != 0)
+		if ((rc = bflush(k, &logredo_buffer[k - 1])) != 0)
 			break;
 	}
 
@@ -810,17 +811,17 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 	 * versions of the operating system.  Therefore switch the magic
 	 * number to the earliest level.
 	 */
-	if (logsup.state != LOGREADERR) {
+	if (global_logsup.state != LOGREADERR) {
 		for (k = 0; k < MAX_ACTIVE; k++)
-			uuid_clear(logsup.active[k]);
+			uuid_clear(global_logsup.active[k]);
 
-		logsup.end = logend;
-		logsup.state = LOGREDONE;
-		logsup.magic = LOGMAGIC;
+		global_logsup.end = logend;
+		global_logsup.state = LOGREDONE;
+		global_logsup.magic = LOGMAGIC;
 	}
-	ujfs_swap_logsuper(&logsup);
+	ujfs_swap_logsuper(&global_logsup);
 	rc = ujfs_rw_diskblocks(Log.fp, (Log.xaddr + LOGPNTOB(LOGSUPER_B)),
-				LOGPSIZE, (char *) &logsup, PUT);
+				LOGPSIZE, (char *) &global_logsup, PUT);
 
 	/*
 	 * now log some info for the curious
@@ -833,9 +834,9 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
 
 	fsck_send_msg(lrdo_RPTNUMLOGREC, nlogrecords);
 
-	fsck_send_msg(lrdo_RPTNUMDOBLK, numdoblk);
+	fsck_send_msg(lrdo_RPTNUMDOBLK, logredo_numdoblk);
 
-	fsck_send_msg(lrdo_RPTNUMNODOBLK, numnodofile);
+	fsck_send_msg(lrdo_RPTNUMNODOBLK, logredo_numnodofile);
 
       error_out:
 
@@ -954,18 +955,18 @@ int openVol(int vol)
 		 * Now that the aggregate superblock has been read, do some
 		 * more validation of the log superblock
 		 */
-		if (logsup.bsize != vopen[vol].lblksize) {
+		if (global_logsup.bsize != vopen[vol].lblksize) {
 			fsck_send_msg(lrdo_LOGSUPBADBLKSZ);
 			return JFS_BLKSIZE_ERROR;
 		}
 
-		if (logsup.l2bsize != vopen[vol].l2bsize) {
+		if (global_logsup.l2bsize != vopen[vol].l2bsize) {
 			fsck_send_msg(lrdo_LOGSUPBADL2BLKSZ);
 			return JFS_L2BLKSIZE_ERROR;
 		}
 
-		aggsb_numpages = lengthPXD(&sb.s_logpxd) * logsup.bsize / LOGPSIZE;
-		if (logsup.size != aggsb_numpages) {
+		aggsb_numpages = lengthPXD(&sb.s_logpxd) * global_logsup.bsize / LOGPSIZE;
+		if (global_logsup.size != aggsb_numpages) {
 			fsck_send_msg(lrdo_LOGSUPBADLOGSZ);
 			return JFS_LOGSIZE_ERROR;
 		}
@@ -1139,14 +1140,14 @@ int bflush(int32_t k,		/*  The index in bufhdr that describes buf */
 	int64_t blkno;
 
 	/* nothing to do ? */
-	if (bufhdr[k].modify == 0)
+	if (logredo_bufhdr[k].modify == 0)
 		return (0);
 
 	/* write it out */
-	vol = bufhdr[k].vol;
+	vol = logredo_bufhdr[k].vol;
 	fp = vopen[vol].fp;
-	blkno = addressPXD(&bufhdr[k].pxd);
-	nbytes = lengthPXD(&bufhdr[k].pxd) << vopen[vol].l2bsize;
+	blkno = addressPXD(&logredo_bufhdr[k].pxd);
+	nbytes = lengthPXD(&logredo_bufhdr[k].pxd) << vopen[vol].l2bsize;
 	rc = ujfs_rw_diskblocks(fp,
 				(uint64_t) (blkno << vopen[vol].l2bsize),
 				(unsigned) nbytes, (char *) buf, PUT);
@@ -1155,7 +1156,7 @@ int bflush(int32_t k,		/*  The index in bufhdr that describes buf */
 		return (BFLUSH_WRITEERROR);
 	}
 
-	bufhdr[k].modify = 0;
+	logredo_bufhdr[k].modify = 0;
 
 	return (0);
 }
@@ -1171,7 +1172,7 @@ int bflush(int32_t k,		/*  The index in bufhdr that describes buf */
  */
 int findLog(FILE *fp, int *in_use)
 {
-	struct logsuper logsup;
+	struct logsuper findLog_logsup;
 	struct superblock sb;
 
 	*in_use = 0;
@@ -1230,9 +1231,9 @@ int findLog(FILE *fp, int *in_use)
 				}
 			}
 			ujfs_rw_diskblocks(Log.fp, LOGPNTOB(LOGSUPER_B),
-					   sizeof (struct logsuper), &logsup, GET);
-			ujfs_swap_logsuper(&logsup);
-			if ((logsup.magic != LOGMAGIC) || (uuid_compare(logsup.uuid, sb.s_loguuid))) {
+					   sizeof (struct logsuper), &findLog_logsup, GET);
+			ujfs_swap_logsuper(&findLog_logsup);
+			if ((findLog_logsup.magic != LOGMAGIC) || (uuid_compare(findLog_logsup.uuid, sb.s_loguuid))) {
 				fclose(Log.fp);
 				*in_use = 0;
 				goto by_uuid;
@@ -1253,9 +1254,9 @@ int findLog(FILE *fp, int *in_use)
 	/*
 	 * is this an external log?
 	 */
-	ujfs_rw_diskblocks(fp, LOGPNTOB(LOGSUPER_B), sizeof (struct logsuper), &logsup, GET);
-	ujfs_swap_logsuper(&logsup);
-	if (logsup.magic != LOGMAGIC) {
+	ujfs_rw_diskblocks(fp, LOGPNTOB(LOGSUPER_B), sizeof (struct logsuper), &findLog_logsup, GET);
+	ujfs_swap_logsuper(&findLog_logsup);
+	if (global_logsup.magic != LOGMAGIC) {
 		fsck_send_msg(lrdo_NOTAFSDEV);
 		return NOT_FSDEV_ERROR;
 	}
@@ -1280,7 +1281,7 @@ int fsError(int type,		/* error types */
 
 	fsck_send_msg(lrdo_ERRORONVOL, vol);
 
-	retcode = -1;
+	logredo_retcode = -1;
 	vopen[vol].status = FM_LOGREDO;
 
 	switch (type) {
@@ -1320,8 +1321,8 @@ int fsError(int type,		/* error types */
 int logError(int type, int logaddr)
 {
 	int k;
-	retcode = -1;
-	logsup.state = LOGREADERR;
+	logredo_retcode = -1;
+	global_logsup.state = LOGREADERR;
 	switch (type) {
 	case LOGEND:
 		fsck_send_msg(lrdo_FINDLOGENDFAIL);
@@ -1376,12 +1377,12 @@ static int recoverExtendFS(FILE *fp)
 	 * read bmap global control page
 	 */
 	/* read superblock yet again */
-	sbp = (struct superblock *) &buffer[0];
+	sbp = (struct superblock *) &logredo_buffer[0];
 	if (rdwrSuper(fp, sbp, PB_READ))
 		goto errout;
 
 	/* read primary block allocation map inode */
-	dip = (char *) &buffer[1];
+	dip = (char *) &logredo_buffer[1];
 	if (ujfs_rw_diskblocks(fp, AITBL_OFF, PSIZE, dip, GET)) {
 		fsck_send_msg(lrdo_EXTFSREADFSSUPERFAIL);
 		goto errout;
@@ -1391,7 +1392,7 @@ static int recoverExtendFS(FILE *fp)
 	dip1 = (struct dinode *) dip;
 	dip1 += BMAP_I;
 
-	bp = (char *) &buffer[2];	/* utility buffer */
+	bp = (char *) &logredo_buffer[2];	/* utility buffer */
 
 	/* start from root in dinode */
 	p = (xtpage_t *) & dip1->di_btroot;
@@ -1660,15 +1661,15 @@ static int recoverExtendFS(FILE *fp)
 	 */
 	/* read log superblock */
 	t64 = (addressPXD(&sbp->s_logpxd) << sbp->s_l2bsize) + LOGPSIZE;
-	if (ujfs_rw_diskblocks(fp, t64, LOGPSIZE, &logsup, GET)) {
+	if (ujfs_rw_diskblocks(fp, t64, LOGPSIZE, &global_logsup, GET)) {
 		fsck_send_msg(lrdo_EXTFSREADLOGSUPFAIL);
 		goto errout;
 	}
 
-	logsup.end = findEndOfLog();
-	logsup.state = LOGREDONE;
+	global_logsup.end = findEndOfLog();
+	global_logsup.state = LOGREDONE;
 
-	if (ujfs_rw_diskblocks(fp, t64, LOGPSIZE, &logsup, PUT)) {
+	if (ujfs_rw_diskblocks(fp, t64, LOGPSIZE, &global_logsup, PUT)) {
 		fsck_send_msg(lrdo_EXTFSWRITELOGSUPFAIL);
 		goto errout;
 	}
@@ -1791,11 +1792,11 @@ static int nfsisloaded()
 	if (entry = load("/usr/sbin/probe", 0, 0))
 		return (1);
 	if (errno == ENOEXEC) {
-		DBG_TRACE(("%s: nfs is not loaded\n", prog))
+		DBG_TRACE(("%s: nfs is not loaded\n", logredo_prog))
 		    return (0);
 	}
 	sav_errno = errno;
-	DBG_TRACE(("%s: ", prog))
+	DBG_TRACE(("%s: ", logredo_prog))
 	    errno = sav_errno;
 	perror("load");
 	return (0);
-- 
2.24.1