Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Sep 2023 07:10:06 GMT
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 08862a1a5e14 - stable/12 - Fix geom build with clang 17 and KTR enabled
Message-ID:  <202309200710.38K7A6i2057184@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/12 has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=08862a1a5e14d49c221999a82e2a52690f918a97

commit 08862a1a5e14d49c221999a82e2a52690f918a97
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-09-12 06:52:31 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-09-20 07:04:10 +0000

    Fix geom build with clang 17 and KTR enabled
    
    When building a kernel with clang 17 and KTR enabled, such as with the
    LINT configurations, a -Werror warning is emitted:
    
        sys/geom/geom_io.c:145:31: error: use of logical '&&' with constant operand [-Werror,-Wconstant-logical-operand]
          145 |         if ((KTR_COMPILE & KTR_GEOM) && (ktr_mask & KTR_GEOM)) {
              |             ~~~~~~~~~~~~~~~~~~~~~~~~ ^
        sys/geom/geom_io.c:145:31: note: use '&' for a bitwise operation
          145 |         if ((KTR_COMPILE & KTR_GEOM) && (ktr_mask & KTR_GEOM)) {
              |                                      ^~
              |                                      &
        sys/geom/geom_io.c:145:31: note: remove constant to silence this warning
    
    Replace the multiple uses of the expression with one macro, and in this
    macro use "!= 0" to get a logical operand instead of a bitwise one.
    
    Reviewed by:    jhb
    MFC after:      3 days
    Differential Revision: https://reviews.freebsd.org/D41823
    
    (cherry picked from commit 479d224efcbf0115f8cd84314fcc46cbac146a1d)
---
 sys/geom/geom_io.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/sys/geom/geom_io.c b/sys/geom/geom_io.c
index 84a290dcc970..50db2f0c6639 100644
--- a/sys/geom/geom_io.c
+++ b/sys/geom/geom_io.c
@@ -67,6 +67,9 @@ __FBSDID("$FreeBSD$");
 #include <vm/vm_extern.h>
 #include <vm/vm_map.h>
 
+#define KTR_GEOM_ENABLED \
+    ((KTR_COMPILE & KTR_GEOM) != 0 && (ktr_mask & KTR_GEOM) != 0)
+
 static int	g_io_transient_map_bio(struct bio *bp);
 
 static struct g_bioq g_bio_run_down;
@@ -150,7 +153,7 @@ g_new_bio(void)
 
 	bp = uma_zalloc(biozone, M_NOWAIT | M_ZERO);
 #ifdef KTR
-	if ((KTR_COMPILE & KTR_GEOM) && (ktr_mask & KTR_GEOM)) {
+	if (KTR_GEOM_ENABLED) {
 		struct stack st;
 
 		CTR1(KTR_GEOM, "g_new_bio(): %p", bp);
@@ -168,7 +171,7 @@ g_alloc_bio(void)
 
 	bp = uma_zalloc(biozone, M_WAITOK | M_ZERO);
 #ifdef KTR
-	if ((KTR_COMPILE & KTR_GEOM) && (ktr_mask & KTR_GEOM)) {
+	if (KTR_GEOM_ENABLED) {
 		struct stack st;
 
 		CTR1(KTR_GEOM, "g_alloc_bio(): %p", bp);
@@ -183,7 +186,7 @@ void
 g_destroy_bio(struct bio *bp)
 {
 #ifdef KTR
-	if ((KTR_COMPILE & KTR_GEOM) && (ktr_mask & KTR_GEOM)) {
+	if (KTR_GEOM_ENABLED) {
 		struct stack st;
 
 		CTR1(KTR_GEOM, "g_destroy_bio(): %p", bp);
@@ -231,7 +234,7 @@ g_clone_bio(struct bio *bp)
 		bp->bio_children++;
 	}
 #ifdef KTR
-	if ((KTR_COMPILE & KTR_GEOM) && (ktr_mask & KTR_GEOM)) {
+	if (KTR_GEOM_ENABLED) {
 		struct stack st;
 
 		CTR2(KTR_GEOM, "g_clone_bio(%p): %p", bp, bp2);
@@ -260,7 +263,7 @@ g_duplicate_bio(struct bio *bp)
 	bp2->bio_attribute = bp->bio_attribute;
 	bp->bio_children++;
 #ifdef KTR
-	if ((KTR_COMPILE & KTR_GEOM) && (ktr_mask & KTR_GEOM)) {
+	if (KTR_GEOM_ENABLED) {
 		struct stack st;
 
 		CTR2(KTR_GEOM, "g_duplicate_bio(%p): %p", bp, bp2);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202309200710.38K7A6i2057184>