Commit 97378001 authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Steven Rostedt (VMware)
Browse files

tools/bootconfig: Suppress non-error messages

Suppress non-error messages when applying new bootconfig
to initrd image. To enable it, replace printf for error
message with pr_err() macro.
This also adds a testcase for this fix.

Link: http://lkml.kernel.org/r/158125351377.16911.13283712972275131160.stgit@devnote2



Reported-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Tested-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent a91e4f12
Loading
Loading
Loading
Loading
+14 −14
Original line number Diff line number Diff line
@@ -140,7 +140,7 @@ int load_xbc_from_initrd(int fd, char **buf)
		return 0;

	if (lseek(fd, -8, SEEK_END) < 0) {
		printf("Failed to lseek: %d\n", -errno);
		pr_err("Failed to lseek: %d\n", -errno);
		return -errno;
	}

@@ -155,7 +155,7 @@ int load_xbc_from_initrd(int fd, char **buf)
		return 0;

	if (lseek(fd, stat.st_size - 8 - size, SEEK_SET) < 0) {
		printf("Failed to lseek: %d\n", -errno);
		pr_err("Failed to lseek: %d\n", -errno);
		return -errno;
	}

@@ -166,7 +166,7 @@ int load_xbc_from_initrd(int fd, char **buf)
	/* Wrong Checksum, maybe no boot config here */
	rcsum = checksum((unsigned char *)*buf, size);
	if (csum != rcsum) {
		printf("checksum error: %d != %d\n", csum, rcsum);
		pr_err("checksum error: %d != %d\n", csum, rcsum);
		return 0;
	}

@@ -185,13 +185,13 @@ int show_xbc(const char *path)

	fd = open(path, O_RDONLY);
	if (fd < 0) {
		printf("Failed to open initrd %s: %d\n", path, fd);
		pr_err("Failed to open initrd %s: %d\n", path, fd);
		return -errno;
	}

	ret = load_xbc_from_initrd(fd, &buf);
	if (ret < 0)
		printf("Failed to load a boot config from initrd: %d\n", ret);
		pr_err("Failed to load a boot config from initrd: %d\n", ret);
	else
		xbc_show_compact_tree();

@@ -209,7 +209,7 @@ int delete_xbc(const char *path)

	fd = open(path, O_RDWR);
	if (fd < 0) {
		printf("Failed to open initrd %s: %d\n", path, fd);
		pr_err("Failed to open initrd %s: %d\n", path, fd);
		return -errno;
	}

@@ -222,7 +222,7 @@ int delete_xbc(const char *path)
	pr_output = 1;
	if (size < 0) {
		ret = size;
		printf("Failed to load a boot config from initrd: %d\n", ret);
		pr_err("Failed to load a boot config from initrd: %d\n", ret);
	} else if (size > 0) {
		ret = fstat(fd, &stat);
		if (!ret)
@@ -245,7 +245,7 @@ int apply_xbc(const char *path, const char *xbc_path)

	ret = load_xbc_file(xbc_path, &buf);
	if (ret < 0) {
		printf("Failed to load %s : %d\n", xbc_path, ret);
		pr_err("Failed to load %s : %d\n", xbc_path, ret);
		return ret;
	}
	size = strlen(buf) + 1;
@@ -262,7 +262,7 @@ int apply_xbc(const char *path, const char *xbc_path)
	/* Check the data format */
	ret = xbc_init(buf);
	if (ret < 0) {
		printf("Failed to parse %s: %d\n", xbc_path, ret);
		pr_err("Failed to parse %s: %d\n", xbc_path, ret);
		free(data);
		free(buf);
		return ret;
@@ -279,20 +279,20 @@ int apply_xbc(const char *path, const char *xbc_path)
	/* Remove old boot config if exists */
	ret = delete_xbc(path);
	if (ret < 0) {
		printf("Failed to delete previous boot config: %d\n", ret);
		pr_err("Failed to delete previous boot config: %d\n", ret);
		return ret;
	}

	/* Apply new one */
	fd = open(path, O_RDWR | O_APPEND);
	if (fd < 0) {
		printf("Failed to open %s: %d\n", path, fd);
		pr_err("Failed to open %s: %d\n", path, fd);
		return fd;
	}
	/* TODO: Ensure the @path is initramfs/initrd image */
	ret = write(fd, data, size + 8);
	if (ret < 0) {
		printf("Failed to apply a boot config: %d\n", ret);
		pr_err("Failed to apply a boot config: %d\n", ret);
		return ret;
	}
	close(fd);
@@ -334,12 +334,12 @@ int main(int argc, char **argv)
	}

	if (apply && delete) {
		printf("Error: You can not specify both -a and -d at once.\n");
		pr_err("Error: You can not specify both -a and -d at once.\n");
		return usage();
	}

	if (optind >= argc) {
		printf("Error: No initrd is specified.\n");
		pr_err("Error: No initrd is specified.\n");
		return usage();
	}

+9 −0
Original line number Diff line number Diff line
@@ -64,6 +64,15 @@ echo "File size check"
new_size=$(stat -c %s $INITRD)
xpass test $new_size -eq $initrd_size

echo "No error messge while applying"
OUTFILE=`mktemp tempout-XXXX`
dd if=/dev/zero of=$INITRD bs=4096 count=1
printf " \0\0\0 \0\0\0" >> $INITRD
$BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1
xfail grep -i "failed" $OUTFILE
xfail grep -i "error" $OUTFILE
rm $OUTFILE

echo "Max node number check"

echo -n > $TEMPCONF