[PATCH v16 32/45] sg: add some __must_hold macros

Douglas Gilbert
2021-02-20T02:06:31Z

In the case of sg_wait_open_event() which calls mutex_unlock on
sdp->open_rel_lock and later calls mutex_lock on the same
lock; this macro is needed to stop sparse complaining. In
other cases it is a reminder to the coder (a precondition).

Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
---
drivers/scsi/sg.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 4f5604e5b2ba..c7eda0f81b07 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -375,6 +375,7 @@ sg_check_file_access(struct file *filp, const char *caller)

static int
sg_wait_open_event(struct sg_device *sdp, bool o_excl)
+ __must_hold(sdp->open_rel_lock)
{
int res = 0;

@@ -1740,6 +1741,7 @@ sg_ctl_sg_io(struct file *filp, struct sg_device *sdp, struct sg_fd *sfp,
*/
static int
sg_set_reserved_sz(struct sg_fd *sfp, int want_rsv_sz)
+ __must_hold(sfp->f_mutex)
{
bool use_new_srp = false;
int res = 0;
@@ -3696,12 +3698,12 @@ sg_remove_sfp(struct kref *kref)

static int
sg_idr_max_id(int id, void *p, void *data)
+ __must_hold(sg_index_lock)
{
int *k = data;

if (*k < id)
*k = id;
-
return 0;
}

@@ -4004,6 +4006,7 @@ sg_proc_seq_show_devstrs(struct seq_file *s, void *v)
/* Writes debug info for one sg_request in obp buffer */
static int
sg_proc_debug_sreq(struct sg_request *srp, int to, char *obp, int len)
+ __must_hold(sfp->srp_arr.xa_lock)
{
bool is_v3v4, v4, is_dur;
int n = 0;
@@ -4106,6 +4109,7 @@ sg_proc_debug_fd(struct sg_fd *fp, char *obp, int len, unsigned long idx)
/* Writes debug info for one sg device (including its sg fds) in obp buffer */
static int
sg_proc_debug_sdev(struct sg_device *sdp, char *obp, int len, int *fd_counterp)
+ __must_hold(sg_index_lock)
{
int n = 0;
int my_count = 0;
--
2.25.1