lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9aec9df8-ca82-4b2f-b227-5e318c66b97e@gmail.com>
Date: Tue, 16 Jul 2024 19:17:05 +0200
From: Mirsad Todorovac <mtodorovac69@...il.com>
To: Jan Kara <jack@...e.cz>
Cc: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
 "Gustavo A. R. Silva" <gustavoars@...nel.org>, Kees Cook <kees@...nel.org>,
 Christian Brauner <brauner@...nel.org>,
 "Matthew Wilcox (Oracle)" <willy@...radead.org>,
 Al Viro <viro@...iv.linux.org.uk>, Jeff Layton <jlayton@...nel.org>,
 reiserfs-devel@...r.kernel.org
Subject: Re: [PROBLEM linux-next] fs/reiserfs/do_balan.c:1147:13: error: variable ‘leaf_mi’ set but not used [-Werror=unused-but-set-variable]

Hi Jan!

On 7/15/24 19:28, Jan Kara wrote:
> Hello Mirsad!
> 
> On Wed 10-07-24 20:09:27, Mirsad Todorovac wrote:
>> On the linux-next vanilla next-20240709 tree, I have attempted the seed KCONFIG_SEED=0xEE7AB52F
>> which was known from before to trigger various errors in compile and build process.
>>
>> Though this might seem as contributing to channel noise, Linux refuses to build this config,
>> treating warnings as errors, using this build line:
>>
>> $ time nice make W=1 -k -j 36 |& tee ../err-next-20230709-01a.log; date
>>
>> As I know that the Chief Penguin doesn't like warnings, but I am also aware that there are plenty
>> left, there seems to be more tedious work ahead to make the compilers happy.
>>
>> The compiler output is:
>>
>> ---------------------------------------------------------------------------------------------------------
>> fs/reiserfs/do_balan.c: In function ‘balance_leaf_new_nodes_paste_whole’:
>> fs/reiserfs/do_balan.c:1147:13: error: variable ‘leaf_mi’ set but not used [-Werror=unused-but-set-variable]
>>  1147 |         int leaf_mi;
>>       |             ^~~~~~~
> 
> Frankly, I wouldn't bother with reiserfs. The warning is there for ages,
> the code is going to get removed in two releases, so I guess we can live
> with these warnings for a few more months...

In essence I agree with you, but for sentimental reasons I would like to keep it because
it is my first journaling Linux system on Knoppix 🙂

Patch is also simple and a no-brainer, as proposed by Mr. Cook:

-------------------------------><------------------------------------------
diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c
index 5129efc6f2e6..fbe73f267853 100644
--- a/fs/reiserfs/do_balan.c
+++ b/fs/reiserfs/do_balan.c
@@ -1144,7 +1144,9 @@ static void balance_leaf_new_nodes_paste_whole(struct tree_balance *tb,
 {
 	struct buffer_head *tbS0 = PATH_PLAST_BUFFER(tb->tb_path);
 	int n = B_NR_ITEMS(tbS0);
+#ifdef CONFIG_REISERFS_CHECK
 	int leaf_mi;
+#endif
 	struct item_head *pasted;
 	struct buffer_info bi;
 
@@ -1157,7 +1159,6 @@ static void balance_leaf_new_nodes_paste_whole(struct tree_balance *tb,
 		reiserfs_panic(tb->tb_sb,
 			     "PAP-12235",
 			     "pos_in_item must be equal to ih_item_len");
-#endif
 
 	leaf_mi = leaf_move_items(LEAF_FROM_S_TO_SNEW, tb, tb->snum[i],
 				  tb->sbytes[i], tb->S_new[i]);
@@ -1165,6 +1166,7 @@ static void balance_leaf_new_nodes_paste_whole(struct tree_balance *tb,
 	RFALSE(leaf_mi,
 	       "PAP-12240: unexpected value returned by leaf_move_items (%d)",
 	       leaf_mi);
+#endif
 
 	/* paste into item */
 	buffer_info_init_bh(tb, &bi, tb->S_new[i]);
diff --git a/fs/reiserfs/fix_node.c b/fs/reiserfs/fix_node.c
index 6c13a8d9a73c..3cbc8e4491ee 100644
--- a/fs/reiserfs/fix_node.c
+++ b/fs/reiserfs/fix_node.c
@@ -1926,6 +1926,7 @@ static int dc_check_balance_leaf(struct tree_balance *tb, int h)
 {
 	struct virtual_node *vn = tb->tb_vn;
 
+#ifdef CONFIG_REISERFS_CHECK
 	/*
 	 * Number of bytes that must be deleted from
 	 * (value is negative if bytes are deleted) buffer which
@@ -1935,26 +1936,39 @@ static int dc_check_balance_leaf(struct tree_balance *tb, int h)
 	int levbytes;
 
 	/* the maximal item size */
-	int maxsize, ret;
+	int maxsize;
+#endif
 
 	/*
 	 * S0 is the node whose balance is currently being checked,
 	 * and F0 is its father.
 	 */
-	struct buffer_head *S0, *F0;
+
+#ifdef CONFIG_REISERFS_CHECK
+	struct buffer_head *S0;
+#endif
+	struct buffer_head *F0;
+
 	int lfree, rfree /* free space in L and R */ ;
+	int ret;
 
+#ifdef CONFIG_REISERFS_CHECK
 	S0 = PATH_H_PBUFFER(tb->tb_path, 0);
+#endif
 	F0 = PATH_H_PPARENT(tb->tb_path, 0);
 
+#ifdef CONFIG_REISERFS_CHECK
 	levbytes = tb->insert_size[h];
 
 	maxsize = MAX_CHILD_SIZE(S0);	/* maximal possible size of an item */
+#endif
 
 	if (!F0) {		/* S[0] is the root now. */
 
+#ifdef CONFIG_REISERFS_CHECK
 		RFALSE(-levbytes >= maxsize - B_FREE_SPACE(S0),
 		       "vs-8240: attempt to create empty buffer tree");
+#endif
 
 		set_parameters(tb, h, 0, 0, 1, NULL, -1, -1);
 		return NO_BALANCING_NEEDED;
diff --git a/fs/reiserfs/lbalance.c b/fs/reiserfs/lbalance.c
index 7f868569d4d0..6f431819fd5e 100644
--- a/fs/reiserfs/lbalance.c
+++ b/fs/reiserfs/lbalance.c
@@ -521,8 +521,9 @@ static void leaf_item_bottle(struct buffer_info *dest_bi,
 static int leaf_copy_items(struct buffer_info *dest_bi, struct buffer_head *src,
 			   int last_first, int cpy_num, int cpy_bytes)
 {
-	struct buffer_head *dest;
 	int pos, i, src_nr_item, bytes;
+#ifdef CONFIG_REISERFS_CHECK
+	struct buffer_head *dest;
 
 	dest = dest_bi->bi_bh;
 	RFALSE(!dest || !src, "vs-10210: !dest || !src");
@@ -532,6 +533,7 @@ static int leaf_copy_items(struct buffer_info *dest_bi, struct buffer_head *src,
 	       "vs-10230: No enough items: %d, req. %d", B_NR_ITEMS(src),
 	       cpy_num);
 	RFALSE(cpy_num < 0, "vs-10240: cpy_num < 0 (%d)", cpy_num);
+#endif
 
 	if (cpy_num == 0)
 		return 0;
--

Best regards,
Mirsad Todorovac

> 								Honza
> 
> 
>>   CC      fs/reiserfs/lbalance.o
>> fs/reiserfs/fix_node.c: In function ‘dc_check_balance_leaf’:
>> fs/reiserfs/fix_node.c:1938:13: error: variable ‘maxsize’ set but not used [-Werror=unused-but-set-variable]
>>  1938 |         int maxsize, ret;
>>       |             ^~~~~~~
>> fs/reiserfs/fix_node.c:1935:13: error: variable ‘levbytes’ set but not used [-Werror=unused-but-set-variable]
>>  1935 |         int levbytes;
>>       |             ^~~~~~~~
>> fs/reiserfs/prints.c: In function ‘prepare_error_buf’:
>> fs/reiserfs/prints.c:221:17: error: function ‘prepare_error_buf’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
>>   221 |                 p += vscnprintf(p, end - p, fmt1, args);
>>       |                 ^
>> fs/reiserfs/prints.c:260:9: error: function ‘prepare_error_buf’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
>>   260 |         p += vscnprintf(p, end - p, fmt1, args);
>>       |         ^
>> make[4]: Target 'arch/x86/kernel/' not remade because of errors.
>> make[3]: *** [scripts/Makefile.build:485: arch/x86/kernel] Error 2
>> make[3]: Target 'arch/x86/' not remade because of errors.
>> make[2]: *** [scripts/Makefile.build:485: arch/x86] Error 2
>> fs/reiserfs/lbalance.c: In function ‘leaf_copy_items’:
>> fs/reiserfs/lbalance.c:524:29: error: variable ‘dest’ set but not used [-Werror=unused-but-set-variable]
>>   524 |         struct buffer_head *dest;
>>       |                             ^~~~
>> cc1: all warnings being treated as errors
>> make[4]: *** [scripts/Makefile.build:244: fs/reiserfs/do_balan.o] Error 1
>> cc1: all warnings being treated as errors
>> make[4]: *** [scripts/Makefile.build:244: fs/reiserfs/prints.o] Error 1
>> cc1: all warnings being treated as errors
>> make[4]: *** [scripts/Makefile.build:244: fs/reiserfs/fix_node.o] Error 1
>> ---------------------------------------------------------------------------------------------------------
>>
>> In fs/reiserfs/fix_node.c:1938:13, fs/reiserfs/fix_node.c:1935:13, and fs/reiserfs/lbalance.c:524:29,
>> the problem seem to lie within the construct RFALSE(), like
>>
>>  521 static int leaf_copy_items(struct buffer_info *dest_bi, struct buffer_head *src,
>>  522                            int last_first, int cpy_num, int cpy_bytes)
>>  523 {
>>  524         struct buffer_head *dest;
>>  525         int pos, i, src_nr_item, bytes;
>>  526 
>>  527         dest = dest_bi->bi_bh;
>>  528         RFALSE(!dest || !src, "vs-10210: !dest || !src");
>>  529         RFALSE(last_first != FIRST_TO_LAST && last_first != LAST_TO_FIRST,
>>  530                "vs-10220:last_first != FIRST_TO_LAST && last_first != LAST_TO_FIRST");
>>  531         RFALSE(B_NR_ITEMS(src) < cpy_num,
>>  532                "vs-10230: No enough items: %d, req. %d", B_NR_ITEMS(src),
>>  533                cpy_num);
>>  534         RFALSE(cpy_num < 0, "vs-10240: cpy_num < 0 (%d)", cpy_num);
>>
>> Hope this helps.
>>
>> Best regards,
>> Mirsad Todorovac
>>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ