Recent changes (master)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The following changes since commit fd98fb689d5ad7e9977461e961fff3fdd37f9cb8:

  Kill fusion atomic write engine (2018-09-08 08:09:53 -0600)

are available in the git repository at:

  git://git.kernel.dk/fio.git master

for you to fetch changes up to ed06328df452330b7210db2558ae125f6e0d8fe2:

  Merge branch 'master' of https://github.com/bvanassche/fio (2018-09-09 17:42:10 -0600)

----------------------------------------------------------------
Bart Van Assche (3):
      iolog: Ensure that sockaddr_un.sun_path is '\0'-terminated
      Micro-optimize num2str()
      num2str(): Avoid an out-of-bounds array access

Jens Axboe (1):
      Merge branch 'master' of https://github.com/bvanassche/fio

 iolog.c       |  5 ++++-
 lib/num2str.c | 16 ++++++++--------
 2 files changed, 12 insertions(+), 9 deletions(-)

---

Diff of recent changes:

diff --git a/iolog.c b/iolog.c
index f3eedb5..26c3458 100644
--- a/iolog.c
+++ b/iolog.c
@@ -580,7 +580,10 @@ static int open_socket(const char *path)
 	if (fd < 0)
 		return fd;
 	addr.sun_family = AF_UNIX;
-	strncpy(addr.sun_path, path, sizeof(addr.sun_path));
+	if (snprintf(addr.sun_path, sizeof(addr.sun_path), "%s", path) >=
+	    sizeof(addr.sun_path))
+		log_err("%s: path name %s is too long for a Unix socket\n",
+			__func__, path);
 	if (connect(fd, (const struct sockaddr *)&addr, strlen(path) + sizeof(addr.sun_family)) == 0)
 		return fd;
 	else
diff --git a/lib/num2str.c b/lib/num2str.c
index 40fb3ae..1abe22f 100644
--- a/lib/num2str.c
+++ b/lib/num2str.c
@@ -30,7 +30,7 @@ char *num2str(uint64_t num, int maxlen, int base, int pow2, enum n2s_unit units)
 		[N2S_BYTEPERSEC]= "B/s",
 		[N2S_BITPERSEC]	= "bit/s"
 	};
-	const unsigned int thousand[] = { 1000, 1024 };
+	const unsigned int thousand = pow2 ? 1024 : 1000;
 	unsigned int modulo;
 	int post_index, carry = 0;
 	char tmp[32], fmt[32];
@@ -49,7 +49,7 @@ char *num2str(uint64_t num, int maxlen, int base, int pow2, enum n2s_unit units)
 		unitprefix = sistr;
 
 	for (post_index = 0; base > 1; post_index++)
-		base /= thousand[!!pow2];
+		base /= thousand;
 
 	switch (units) {
 	case N2S_NONE:
@@ -72,14 +72,14 @@ char *num2str(uint64_t num, int maxlen, int base, int pow2, enum n2s_unit units)
 	 * Divide by K/Ki until string length of num <= maxlen.
 	 */
 	modulo = -1U;
-	while (post_index < sizeof(sistr)) {
+	while (post_index < ARRAY_SIZE(sistr)) {
 		sprintf(tmp, "%llu", (unsigned long long) num);
 		if (strlen(tmp) <= maxlen)
 			break;
 
-		modulo = num % thousand[!!pow2];
-		num /= thousand[!!pow2];
-		carry = modulo >= thousand[!!pow2] / 2;
+		modulo = num % thousand;
+		num /= thousand;
+		carry = modulo >= thousand / 2;
 		post_index++;
 	}
 
@@ -110,9 +110,9 @@ done:
 	 * Fill in everything and return the result.
 	 */
 	assert(maxlen - strlen(tmp) - 1 > 0);
-	assert(modulo < thousand[!!pow2]);
+	assert(modulo < thousand);
 	sprintf(fmt, "%%.%df", (int)(maxlen - strlen(tmp) - 1));
-	sprintf(tmp, fmt, (double)modulo / (double)thousand[!!pow2]);
+	sprintf(tmp, fmt, (double)modulo / (double)thousand);
 
 	sprintf(buf, "%llu.%s%s%s", (unsigned long long) num, &tmp[2],
 			unitprefix[post_index], unitstr[units]);



[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux