mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Anthony Krowiak <akrowiak@linux.ibm.com>
To: Matthew Rosato <mjrosato@linux.ibm.com>,
	linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org
Cc: jjherne@linux.ibm.com, borntraeger@de.ibm.com,
	pasic@linux.ibm.com, alex@shazbot.org, kwankhede@nvidia.com,
	fiuczy@linux.ibm.com, pbonzini@redhat.com, frankja@linux.ibm.com,
	imbrenda@linux.ibm.com, agordeev@linux.ibm.com,
	hca@linux.ibm.com, gor@linux.ibm.com, stable@vger.kernel.org
Subject: Re: [PATCH v2 7/8] s390/vfio-ap: Fix required lock not held during display of sysfs status attribute
Date: Tue, 11 Aug 2026 16:19:26 -0400	[thread overview]
Message-ID: <e7ec1795-27f4-431b-8e92-54a58e46a3db@linux.ibm.com> (raw)
In-Reply-To: <404259da-2b79-42ff-b663-fc0237cd753f@linux.ibm.com>



On 8/11/26 2:55 PM, Matthew Rosato wrote:
> On 8/11/26 2:51 PM, Anthony Krowiak wrote:
>>
>> On 8/11/26 2:20 PM, Matthew Rosato wrote:
>>> On 8/11/26 2:03 PM, Matthew Rosato wrote:
>>>> On 8/10/26 3:22 PM, Anthony Krowiak wrote:
>>>>> The status_show function that supports display of the status
>>>>> attribute of
>>>>> the devices in /sys/bus/ap/devices calls the vfio_ap_mdev_for_queue
>>>>> function which iterates the matrix_dev->mdev_list to find the object
>>>>> representing the queue device whose status is to be displayed. In
>>>>> order to
>>>>> traverse this list, the matrix_dev->guests_lock mutex must be held
>>>>> which is
>>>>> not the case.
>>>>>
>>>>> To fix this, the guests_lock mutex is taken prior to taking the
>>>>> matrix_dev->mdevs_lock mutex in the status_show function. It is taken
>>>>> there rather than the vfio_ap_mdev_for_queue function - where it is
>>>>> needed - because it must be taken prior to the mdevs_lock mutex in
>>>>> order to
>>>>> adhere to the proper locking order and prevent a lockdep splat; also
>>>>> because the mdevs_lock is needed there to access fields within
>>>>> the matrix_mdev object in that function.
>>>>>
>>>>> Fixes: f139862b92cf ("s390/vfio-ap: add status attribute to AP queue
>>>>> device's sysfs dir")
>>>>> Cc: stable@vger.kernel.org
>>>>> Signed-off-by: Anthony Krowiak <akrowiak@linux.ibm.com>
>>>> Please see my comment on patch 3.
>>> Also same idea here, I don't believe the pre-existing finding from
>>> Sashiko against this patch is resolved by this series, so have a look
>>> and consider a follow-on patch if it's a valid report.
>> Can you be more specific as to which Sashiko finding you are talking about?
>>
>>
> It only found 1 against this patch.  Quoting:
>
> This is a pre-existing issue, but can this sequence lead to a NULL pointer
> dereference if status_show() is called during device probing?
> If a userspace process reads the status sysfs attribute before
> vfio_ap_mdev_probe_queue() has finished setting the device driver data:
> vfio_ap_mdev_probe_queue() {
>      ...
>      ret = sysfs_create_group(&apdev->device.kobj, &vfio_queue_attr_group);
>      if (ret)
>          return ret;
>      q = kzalloc(...);
>      ...
>      dev_set_drvdata(&apdev->device, q);
> }
> Userspace could trigger status_show() while the driver data is still NULL.
> The dev_get_drvdata() call above would return NULL for q, which is then
> passed to vfio_ap_mdev_for_queue() without any checks.
> Inside vfio_ap_mdev_for_queue(), the uninitialized q is unconditionally
> dereferenced:
> vfio_ap_mdev_for_queue() {
>      struct ap_matrix_mdev *matrix_mdev;
>      unsigned long apid = AP_QID_CARD(q->apqn);
>      ...
> }
> Does the sysfs group creation need to be delayed until after the driver
> data is fully initialized and set, or should status_show() check if q is NULL?

I have a fix for this, shall I include it in this series or send it as 
an individual
patch?

>


  reply	other threads:[~2026-08-11 20:19 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-10 19:22 [PATCH v2 0/8] s390/vfio-ap: Fix bugs in vfio_ap device driver callback functions Anthony Krowiak
2026-08-10 19:22 ` [PATCH v2 1/8] s390/vfio-ap: Fix stale do_remove flag across iterations in vfio_ap_mdev_cfg_remove Anthony Krowiak
2026-08-11 14:57   ` Matthew Rosato
2026-08-10 19:22 ` [PATCH v2 2/8] s390/vfio-ap: Fix dereference matrix_mdev->kvm without checking for NULL Anthony Krowiak
2026-08-11 15:53   ` Matthew Rosato
2026-08-10 19:22 ` [PATCH v2 3/8] s390/vfio-ap: Fix use of wrong lock in mdev probe function Anthony Krowiak
2026-08-11 15:58   ` Matthew Rosato
2026-08-11 18:42     ` Anthony Krowiak
2026-08-11 18:44       ` Matthew Rosato
2026-08-11 18:53         ` Anthony Krowiak
2026-08-10 19:22 ` [PATCH v2 4/8] s390/vfio-ap: Fix required lock not held during update of ap_matrix_mdev object Anthony Krowiak
2026-08-11 16:38   ` Matthew Rosato
2026-08-10 19:22 ` [PATCH v2 5/8] s390/vfio-ap: Fix control domain removal in vfio_ap_mdev_cfg_remove Anthony Krowiak
2026-08-11 17:14   ` Matthew Rosato
2026-08-10 19:22 ` [PATCH v2 6/8] s390/vfio-ap: fix potential use of uninitialized apm_filtered bitmap Anthony Krowiak
2026-08-11 18:02   ` Matthew Rosato
2026-08-11 19:24     ` Anthony Krowiak
2026-08-10 19:22 ` [PATCH v2 7/8] s390/vfio-ap: Fix required lock not held during display of sysfs status attribute Anthony Krowiak
2026-08-11 18:03   ` Matthew Rosato
2026-08-11 18:20     ` Matthew Rosato
2026-08-11 18:51       ` Anthony Krowiak
2026-08-11 18:55         ` Matthew Rosato
2026-08-11 20:19           ` Anthony Krowiak [this message]
2026-08-11 18:43     ` Anthony Krowiak
2026-08-10 19:22 ` [PATCH v2 8/8] s390/vfio-ap: Fix hot-unplug skipped when last AP adapter or domain removed Anthony Krowiak
2026-08-11 20:43   ` Matthew Rosato

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=e7ec1795-27f4-431b-8e92-54a58e46a3db@linux.ibm.com \
    --to=akrowiak@linux.ibm.com \
    --cc=agordeev@linux.ibm.com \
    --cc=alex@shazbot.org \
    --cc=borntraeger@de.ibm.com \
    --cc=fiuczy@linux.ibm.com \
    --cc=frankja@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=jjherne@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mjrosato@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=stable@vger.kernel.org \
    /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

all inboxes | Powered by JetHome®