From: Ben Hutchings <ben.hutchings@codethink.co.uk>
To: hare@suse.de, hare@suse.com, hch@lst.de, jthumshirn@suse.de,
martin.petersen@oracle.com, toddpoynor@google.com
Cc: stable@vger.kernel.org, Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: Patch "scsi: sg: reset 'res_in_use' after unlinking reserved array" has been added to the 4.4-stable tree
Date: Wed, 11 Oct 2017 21:36:03 +0100 [thread overview]
Message-ID: <1507754163.22379.1.camel@codethink.co.uk> (raw)
In-Reply-To: <15041604342474@kroah.com>
On Thu, 2017-08-31 at 08:20 +0200, gregkh@linuxfoundation.org wrote:
[...]
>
> Subject: scsi: sg: reset 'res_in_use' after unlinking reserved array
>
> From: Hannes Reinecke <hare@suse.de>
>
> commit e791ce27c3f6a1d3c746fd6a8f8e36c9540ec6f9 upstream.
>
> Once the reserved page array is unused we can reset the 'res_in_use'
> state; here we can do a lazy update without holding the mutex as we only
> need to check against concurrent access, not concurrent release.
[...]
This description makes no sense. A simple write to a variable cannot
be used to synchronise anything as it can be reordered with other
memory operations, including those that write to the buffer you're
trying to protect. This write needs to be combined with a release
barrier or preceded by an smp_wmb(). Every read of res_in_use needs to
be combined with an acquire barrier or followed by an smp_rmb().
Ben.
> --- a/drivers/scsi/sg.c
> +++ b/drivers/scsi/sg.c
> @@ -2052,6 +2052,8 @@ sg_unlink_reserve(Sg_fd * sfp, Sg_reques
> req_schp->sglist_len = 0;
> sfp->save_scat_len = 0;
> srp->res_used = 0;
> + /* Called without mutex lock to avoid deadlock */
> + sfp->res_in_use = 0;
> }
>
> static Sg_request *
--
Ben Hutchings
Software Developer, Codethink Ltd.
prev parent reply other threads:[~2017-10-11 20:36 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-31 6:20 Patch "scsi: sg: reset 'res_in_use' after unlinking reserved array" has been added to the 4.4-stable tree gregkh
2017-10-11 20:36 ` Ben Hutchings [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1507754163.22379.1.camel@codethink.co.uk \
--to=ben.hutchings@codethink.co.uk \
--cc=gregkh@linuxfoundation.org \
--cc=hare@suse.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=jthumshirn@suse.de \
--cc=martin.petersen@oracle.com \
--cc=stable@vger.kernel.org \
--cc=toddpoynor@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).