Messages in this thread | ![/](/images/icornerl.gif) | | Date | Tue, 21 Mar 2023 08:47:44 -0400 | Subject | Re: [PATCH v2] s390/vfio_ap: fix memory leak in vfio_ap device driver | From | Anthony Krowiak <> |
| |
PING!
On 3/20/23 11:04 AM, Tony Krowiak wrote: > The device release callback function invoked to release the matrix device > uses the dev_get_drvdata(device *dev) function to retrieve the > pointer to the vfio_matrix_dev object in order to free its storage. The > problem is, this object is not stored as drvdata with the device; since the > kfree function will accept a NULL pointer, the memory for the > vfio_matrix_dev object is never freed. > > Since the device being released is contained within the vfio_matrix_dev > object, the container_of macro will be used to retrieve its pointer. > > Fixes: 1fde573413b5 ("s390: vfio-ap: base implementation of VFIO AP device driver") > Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com> > Reviewed-by: Harald Freudenberger <freude@linux.ibm.com> > --- > drivers/s390/crypto/vfio_ap_drv.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/s390/crypto/vfio_ap_drv.c b/drivers/s390/crypto/vfio_ap_drv.c > index 997b524bdd2b..a48c6938ae68 100644 > --- a/drivers/s390/crypto/vfio_ap_drv.c > +++ b/drivers/s390/crypto/vfio_ap_drv.c > @@ -54,8 +54,9 @@ static struct ap_driver vfio_ap_drv = { > > static void vfio_ap_matrix_dev_release(struct device *dev) > { > - struct ap_matrix_dev *matrix_dev = dev_get_drvdata(dev); > + struct ap_matrix_dev *matrix_dev; > > + matrix_dev = container_of(dev, struct ap_matrix_dev, device); > kfree(matrix_dev); > } >
| ![\](/images/icornerr.gif) |