From: Jason Gunthorpe <jgg@nvidia.com>
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Sagi Grimberg <sagi@grimberg.me>, Max Gurtovoy <maxg@nvidia.com>,
<linux-rdma@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Doug Ledford <dledford@redhat.com>
Subject: Re: [PATCH v2] IB/iser: Remove in_interrupt() usage.
Date: Mon, 7 Dec 2020 16:32:21 -0400 [thread overview]
Message-ID: <20201207203221.GA1791366@nvidia.com> (raw)
In-Reply-To: <20201204174256.62xfcvudndt7oufl@linutronix.de>
On Fri, Dec 04, 2020 at 06:42:56PM +0100, Sebastian Andrzej Siewior wrote:
> iser_initialize_task_headers() uses in_interrupt() to find out if it is
> safe to acquire a mutex.
>
> in_interrupt() is deprecated as it is ill defined and does not provide what
> it suggests. Aside of that it covers only parts of the contexts in which
> a mutex may not be acquired.
>
> The following callchains exist:
>
> iscsi_queuecommand() *locks* iscsi_session::frwd_lock
> -> iscsi_prep_scsi_cmd_pdu()
> -> session->tt->init_task() (iscsi_iser_task_init())
> -> iser_initialize_task_headers()
> -> iscsi_iser_task_xmit() (iscsi_transport::xmit_task)
> -> iscsi_iser_task_xmit_unsol_data()
> -> iser_send_data_out()
> -> iser_initialize_task_headers()
>
> iscsi_data_xmit() *locks* iscsi_session::frwd_lock
> -> iscsi_prep_mgmt_task()
> -> session->tt->init_task() (iscsi_iser_task_init())
> -> iser_initialize_task_headers()
> -> iscsi_prep_scsi_cmd_pdu()
> -> session->tt->init_task() (iscsi_iser_task_init())
> -> iser_initialize_task_headers()
>
> __iscsi_conn_send_pdu() caller has iscsi_session::frwd_lock
> -> iscsi_prep_mgmt_task()
> -> session->tt->init_task() (iscsi_iser_task_init())
> -> iser_initialize_task_headers()
> -> session->tt->xmit_task() (
>
> The only callchain that is close to be invoked in preemptible context:
> iscsi_xmitworker() worker
> -> iscsi_data_xmit()
> -> iscsi_xmit_task()
> -> conn->session->tt->xmit_task() (iscsi_iser_task_xmit()
>
> In iscsi_iser_task_xmit() there is this check:
> if (!task->sc)
> return iscsi_iser_mtask_xmit(conn, task);
>
> so it does end up in iser_initialize_task_headers() and
> iser_initialize_task_headers() relies on iscsi_task::sc == NULL.
>
> Remove conditional locking of iser_conn::state_mutex because there is no
> call chain to do so. Remove the goto label and return early now that
> there is no clean up needed.
>
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> Cc: Sagi Grimberg <sagi@grimberg.me>
> Cc: Max Gurtovoy <maxg@nvidia.com>
> Cc: Doug Ledford <dledford@redhat.com>
> Cc: Jason Gunthorpe <jgg@ziepe.ca>
> Cc: linux-rdma@vger.kernel.org
> ---
Applied to for-next, thanks
Jason
prev parent reply other threads:[~2020-12-07 20:33 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-26 20:27 [PATCH] IB/iser: Remove in_interrupt() usage Sebastian Andrzej Siewior
2020-11-26 20:53 ` Jason Gunthorpe
2020-11-27 12:34 ` Sebastian Andrzej Siewior
2020-11-27 13:03 ` Jason Gunthorpe
2020-11-27 14:14 ` Sebastian Andrzej Siewior
2020-11-27 14:31 ` Jason Gunthorpe
2020-12-03 13:56 ` Sebastian Andrzej Siewior
2020-12-03 19:30 ` Sagi Grimberg
2020-12-04 17:42 ` [PATCH v2] " Sebastian Andrzej Siewior
2020-12-07 20:32 ` Jason Gunthorpe [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=20201207203221.GA1791366@nvidia.com \
--to=jgg@nvidia.com \
--cc=bigeasy@linutronix.de \
--cc=dledford@redhat.com \
--cc=linux-rdma@vger.kernel.org \
--cc=maxg@nvidia.com \
--cc=sagi@grimberg.me \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.