s390/vfio_ccw: Add __must_hold() attribute to vfio_ccw_sch_quiesce()

Add __must_hold() attribute to vfio_ccw_sch_quiesce() in order to let
clang's context analysis know that sch->lock must be held on function
entry. This can also be easily verified when inspecting the function.

Without this annotation this leads to a valid warning when context
analysis is enabled:

drivers/s390/cio/vfio_ccw_drv.c:55:9: warning:
  expecting spinlock 'sch->lock' to be held at start of each loop [-Wthread-safety-analysis]
   55 |                 ret = cio_cancel_halt_clear(sch, &iretry);
      |                       ^

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Acked-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
Heiko Carstens 2026-08-06 17:38:47 +02:00 committed by Vasily Gorbik
parent b99a102ede
commit aa8db8e37e
2 changed files with 3 additions and 1 deletions

View File

@ -35,6 +35,7 @@ debug_info_t *vfio_ccw_debug_trace_id;
* Helpers
*/
int vfio_ccw_sch_quiesce(struct subchannel *sch)
__must_hold(&sch->lock)
{
struct vfio_ccw_parent *parent = dev_get_drvdata(&sch->dev);
struct vfio_ccw_private *private = dev_get_drvdata(&parent->dev);

View File

@ -127,7 +127,8 @@ struct vfio_ccw_private {
struct work_struct crw_work;
} __aligned(8);
int vfio_ccw_sch_quiesce(struct subchannel *sch);
int vfio_ccw_sch_quiesce(struct subchannel *sch)
__must_hold(&sch->lock);
void vfio_ccw_sch_io_todo(struct work_struct *work);
void vfio_ccw_crw_todo(struct work_struct *work);