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-next>] [day] [month] [year] [list]
Message-ID: <20250919121301.1113759-1-abhijit.gangurde@amd.com>
Date: Fri, 19 Sep 2025 17:43:00 +0530
From: Abhijit Gangurde <abhijit.gangurde@....com>
To: <jgg@...pe.ca>, <leon@...nel.org>
CC: <allen.hubbe@....com>, <linux-rdma@...r.kernel.org>,
	<linux-kernel@...r.kernel.org>, Abhijit Gangurde <abhijit.gangurde@....com>
Subject: [PATCH rdma-next 1/2] RDMA/ionic: Fix build failure on SPARC due to xchg() operand size

xchg() is used to safely handle the event queue arming.
However SPARC xchg operates only 4B of variable.
Change variable type from bool to int.

Unverified Error/Warning (likely false positive, kindly check if interested):

    ERROR: modpost: "__xchg_called_with_bad_pointer" [drivers/infiniband/hw/ionic/ionic_rdma.ko] undefined!

Error/Warning ids grouped by kconfigs:

recent_errors
`-- sparc-allmodconfig
    `-- ERROR:__xchg_called_with_bad_pointer-drivers-infiniband-hw-ionic-ionic_rdma.ko-undefined

Fixes: f3bdbd42702c ("RDMA/ionic: Create device queues to support admin operations")
Reported-by: Leon Romanovsky <leon@...nel.org>
Closes: https://lore.kernel.org/lkml/20250918180750.GA135135@unreal/
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@....com>
---
 drivers/infiniband/hw/ionic/ionic_admin.c | 8 ++++----
 drivers/infiniband/hw/ionic/ionic_ibdev.h | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/infiniband/hw/ionic/ionic_admin.c b/drivers/infiniband/hw/ionic/ionic_admin.c
index 1ba7a8ecc073..d9221ef134c4 100644
--- a/drivers/infiniband/hw/ionic/ionic_admin.c
+++ b/drivers/infiniband/hw/ionic/ionic_admin.c
@@ -945,7 +945,7 @@ static void ionic_poll_eq_work(struct work_struct *work)
 				   npolled, 0);
 		queue_work(ionic_evt_workq, &eq->work);
 	} else {
-		xchg(&eq->armed, true);
+		xchg(&eq->armed, 1);
 		ionic_intr_credits(eq->dev->lif_cfg.intr_ctrl, eq->intr,
 				   0, IONIC_INTR_CRED_UNMASK);
 	}
@@ -954,10 +954,10 @@ static void ionic_poll_eq_work(struct work_struct *work)
 static irqreturn_t ionic_poll_eq_isr(int irq, void *eqptr)
 {
 	struct ionic_eq *eq = eqptr;
-	bool was_armed;
+	int was_armed;
 	u32 npolled;
 
-	was_armed = xchg(&eq->armed, false);
+	was_armed = xchg(&eq->armed, 0);
 
 	if (unlikely(!eq->enable) || !was_armed)
 		return IRQ_HANDLED;
@@ -968,7 +968,7 @@ static irqreturn_t ionic_poll_eq_isr(int irq, void *eqptr)
 				   npolled, 0);
 		queue_work(ionic_evt_workq, &eq->work);
 	} else {
-		xchg(&eq->armed, true);
+		xchg(&eq->armed, 1);
 		ionic_intr_credits(eq->dev->lif_cfg.intr_ctrl, eq->intr,
 				   0, IONIC_INTR_CRED_UNMASK);
 	}
diff --git a/drivers/infiniband/hw/ionic/ionic_ibdev.h b/drivers/infiniband/hw/ionic/ionic_ibdev.h
index b7a1a57bae03..82fda1e3cdb6 100644
--- a/drivers/infiniband/hw/ionic/ionic_ibdev.h
+++ b/drivers/infiniband/hw/ionic/ionic_ibdev.h
@@ -126,7 +126,7 @@ struct ionic_eq {
 
 	struct ionic_queue	q;
 
-	bool			armed;
+	int			armed;
 	bool			enable;
 
 	struct work_struct	work;
-- 
2.43.0


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ