From: Eric Farman <farman@linux.ibm.com>
To: Matthew Rosato <mjrosato@linux.ibm.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>,
Alex Williamson <alex.williamson@redhat.com>,
Liu Yi L <yi.l.liu@intel.com>, Halil Pasic <pasic@linux.ibm.com>,
kvm@vger.kernel.org, linux-s390@vger.kernel.org,
Eric Farman <farman@linux.ibm.com>
Subject: [PATCH v1 08/18] vfio/ccw: Check that private pointer is not NULL
Date: Thu, 2 Jun 2022 19:19:38 +0200 [thread overview]
Message-ID: <20220602171948.2790690-9-farman@linux.ibm.com> (raw)
In-Reply-To: <20220602171948.2790690-1-farman@linux.ibm.com>
The subchannel->dev->drvdata pointer is set in vfio_ccw_sch_probe()
and cleared in vfio_ccw_sch_remove(). In a purely defensive move,
let's check that the resultant pointer exists before operating on it
any way, since some lifecycle changes are forthcoming.
Signed-off-by: Eric Farman <farman@linux.ibm.com>
---
drivers/s390/cio/vfio_ccw_drv.c | 12 ++++++++++++
drivers/s390/cio/vfio_ccw_ops.c | 3 +++
2 files changed, 15 insertions(+)
diff --git a/drivers/s390/cio/vfio_ccw_drv.c b/drivers/s390/cio/vfio_ccw_drv.c
index 3784eb4cda85..f8226db26e54 100644
--- a/drivers/s390/cio/vfio_ccw_drv.c
+++ b/drivers/s390/cio/vfio_ccw_drv.c
@@ -41,6 +41,9 @@ int vfio_ccw_sch_quiesce(struct subchannel *sch)
DECLARE_COMPLETION_ONSTACK(completion);
int iretry, ret = 0;
+ if (!private)
+ return 0;
+
spin_lock_irq(sch->lock);
if (!sch->schib.pmcw.ena)
goto out_unlock;
@@ -132,6 +135,9 @@ static void vfio_ccw_sch_irq(struct subchannel *sch)
{
struct vfio_ccw_private *private = dev_get_drvdata(&sch->dev);
+ if (WARN_ON(!private))
+ return;
+
inc_irq_stat(IRQIO_CIO);
vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_INTERRUPT);
}
@@ -260,6 +266,9 @@ static void vfio_ccw_sch_remove(struct subchannel *sch)
{
struct vfio_ccw_private *private = dev_get_drvdata(&sch->dev);
+ if (!private)
+ return;
+
vfio_ccw_sch_quiesce(sch);
mdev_unregister_device(&sch->dev);
@@ -293,6 +302,9 @@ static int vfio_ccw_sch_event(struct subchannel *sch, int process)
unsigned long flags;
int rc = -EAGAIN;
+ if (!private)
+ return 0;
+
spin_lock_irqsave(sch->lock, flags);
if (!device_is_registered(&sch->dev))
goto out_unlock;
diff --git a/drivers/s390/cio/vfio_ccw_ops.c b/drivers/s390/cio/vfio_ccw_ops.c
index 497e1b7ffd61..9e5c184eab89 100644
--- a/drivers/s390/cio/vfio_ccw_ops.c
+++ b/drivers/s390/cio/vfio_ccw_ops.c
@@ -152,6 +152,9 @@ static void vfio_ccw_mdev_remove(struct mdev_device *mdev)
{
struct vfio_ccw_private *private = dev_get_drvdata(mdev->dev.parent);
+ if (!private)
+ return;
+
VFIO_CCW_MSG_EVENT(2, "sch %x.%x.%04x: remove\n",
private->sch->schid.cssid,
private->sch->schid.ssid,
--
2.32.0
next prev parent reply other threads:[~2022-06-02 17:20 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-02 17:19 [PATCH v1 00/18] VFIO ccw/mdev rework Eric Farman
2022-06-02 17:19 ` [PATCH v1 01/18] vfio/ccw: Remove UUID from s390 debug log Eric Farman
2022-06-02 18:55 ` Jason Gunthorpe
2022-06-02 19:51 ` Matthew Rosato
2022-06-03 19:03 ` Eric Farman
2022-06-06 20:45 ` Matthew Rosato
2022-06-02 17:19 ` [PATCH v1 02/18] vfio/ccw: Fix FSM state if mdev probe fails Eric Farman
2022-06-02 18:58 ` Jason Gunthorpe
2022-06-03 13:21 ` Matthew Rosato
2022-06-03 19:12 ` Eric Farman
2022-06-06 20:44 ` Matthew Rosato
2022-06-02 17:19 ` [PATCH v1 03/18] vfio/ccw: Ensure mdev->dev is cleared on mdev remove Eric Farman
2022-06-03 13:25 ` Matthew Rosato
2022-06-03 13:37 ` Jason Gunthorpe
2022-06-03 15:20 ` Tony Krowiak
2022-06-02 17:19 ` [PATCH v1 04/18] vfio/ccw: Do not change FSM state in subchannel event Eric Farman
2022-06-02 17:19 ` [PATCH v1 05/18] vfio/ccw: Remove private->mdev Eric Farman
2022-06-02 19:02 ` Jason Gunthorpe
2022-06-02 19:13 ` Eric Farman
2022-06-02 17:19 ` [PATCH v1 06/18] vfio/ccw: Pass enum to FSM event jumptable Eric Farman
2022-06-02 19:02 ` Jason Gunthorpe
2022-06-02 19:22 ` Matthew Rosato
2022-06-02 17:19 ` [PATCH v1 07/18] vfio/ccw: Flatten MDEV device (un)register Eric Farman
2022-06-02 19:03 ` Jason Gunthorpe
2022-06-02 19:14 ` Matthew Rosato
2022-06-03 20:38 ` Eric Farman
2022-06-02 17:19 ` Eric Farman [this message]
2022-06-02 19:04 ` [PATCH v1 08/18] vfio/ccw: Check that private pointer is not NULL Matthew Rosato
2022-06-02 19:05 ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 09/18] vfio/ccw: Create an OPEN FSM Event Eric Farman
2022-06-02 19:08 ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 10/18] vfio/ccw: Create a CLOSE FSM event Eric Farman
2022-06-02 19:10 ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 11/18] vfio/ccw: Refactor vfio_ccw_mdev_reset Eric Farman
2022-06-02 19:11 ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 12/18] vfio/ccw: Move FSM open/close to MDEV open/close Eric Farman
2022-06-02 19:14 ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 13/18] vfio/mdev: Consolidate all the device_api sysfs into the core code Eric Farman
2022-06-03 6:36 ` Christoph Hellwig
2022-06-03 14:55 ` Tony Krowiak
2022-06-06 19:43 ` Kirti Wankhede
2022-06-10 7:22 ` Tian, Kevin
2022-06-02 17:19 ` [PATCH v1 14/18] vfio/mdev: Add mdev available instance checking to the core Eric Farman
2022-06-03 15:02 ` Tony Krowiak
2022-06-06 20:02 ` Kirti Wankhede
2022-06-06 20:23 ` Eric Farman
2022-06-06 20:37 ` Matthew Rosato
2022-06-10 7:43 ` Tian, Kevin
2022-06-13 6:46 ` Christoph Hellwig
2022-06-13 14:08 ` Eric Farman
2022-06-02 17:19 ` [PATCH v1 15/18] vfio/ccw: Manage private with mdev Eric Farman
2022-06-02 17:19 ` [PATCH v1 16/18] vfio/ccw: Create a get_private routine Eric Farman
2022-06-02 19:17 ` Jason Gunthorpe
2022-06-02 17:19 ` [PATCH v1 17/18] vfio: Export vfio_device_try_get() Eric Farman
2022-06-03 7:46 ` Cornelia Huck
2022-06-02 17:19 ` [PATCH v1 18/18] vfio/ccw: Manage ccw/mdev reference counts Eric Farman
2022-06-02 19:20 ` Jason Gunthorpe
2022-06-02 19:29 ` [PATCH v1 00/18] VFIO ccw/mdev rework Jason Gunthorpe
2022-06-10 4:11 ` Yi Liu
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=20220602171948.2790690-9-farman@linux.ibm.com \
--to=farman@linux.ibm.com \
--cc=alex.williamson@redhat.com \
--cc=jgg@nvidia.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mjrosato@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=yi.l.liu@intel.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 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.