summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2026-08-06 15:47:58 +0200
committerMartin K. Petersen (Oracle) <mkp@kernel.org>2026-08-07 13:44:39 -0400
commitea598cfa561bcc0c8e7bc07fd9b1c22b64c756b3 (patch)
treedb2b7fe6d5c06f6e9a214a1aaec18a1a9771368b
parentdc59e4fea9d83f03bad6bddf3fa2e52491777482 (diff)
downloadlinux-ea598cfa561bcc0c8e7bc07fd9b1c22b64c756b3.tar.gz
linux-ea598cfa561bcc0c8e7bc07fd9b1c22b64c756b3.zip
scsi: zfcp: Add __must_hold() attribute to zfcp_qdio_sbal_get()
Add __must_hold() attribute to zfcp_qdio_sbal_get() in order to let clang's context analysis know that qdio->req_q_wq must be held on function entry. This is also documented above the function. Without this annotation this leads to a valid warning when context analysis is enabled: drivers/s390/scsi/zfcp_qdio.c:287:8: warning: expecting spinlock '->req_q_lock' to be held at start of each loop [-Wthread-safety-analysis] 287 | ret = wait_event_interruptible_lock_irq_timeout(qdio->req_q_wq, | ^ Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Link: https://patch.msgid.link/20260806134759.2122369-2-hca@linux.ibm.com Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
-rw-r--r--drivers/s390/scsi/zfcp_ext.h3
-rw-r--r--drivers/s390/scsi/zfcp_qdio.c1
2 files changed, 3 insertions, 1 deletions
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h
index 9f5152b42b0e..ced8687f3b7b 100644
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -152,7 +152,8 @@ extern ssize_t zfcp_fsf_scnprint_fc_security(char *buf, size_t size,
/* zfcp_qdio.c */
extern int zfcp_qdio_setup(struct zfcp_adapter *);
extern void zfcp_qdio_destroy(struct zfcp_qdio *);
-extern int zfcp_qdio_sbal_get(struct zfcp_qdio *);
+extern int zfcp_qdio_sbal_get(struct zfcp_qdio *qdio)
+ __must_hold(qdio->req_q_lock);
extern int zfcp_qdio_send(struct zfcp_qdio *, struct zfcp_qdio_req *);
extern int zfcp_qdio_sbals_from_sg(struct zfcp_qdio *, struct zfcp_qdio_req *,
struct scatterlist *);
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c
index ce1af72d9b61..bac8385e069f 100644
--- a/drivers/s390/scsi/zfcp_qdio.c
+++ b/drivers/s390/scsi/zfcp_qdio.c
@@ -281,6 +281,7 @@ static int zfcp_qdio_sbal_check(struct zfcp_qdio *qdio)
* Returns: 0 on success, -EIO if there is no free sbal after waiting.
*/
int zfcp_qdio_sbal_get(struct zfcp_qdio *qdio)
+ __must_hold(qdio->req_q_lock)
{
long ret;