| From 0ca8c6e99a71eb7bec39c822846dc0ab2cd3a968 Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <johan@kernel.org> |
| Date: Thu, 10 Oct 2019 15:13:33 +0200 |
| Subject: [PATCH] s390/zcrypt: fix memleak at release |
| |
| commit 388bb19be8eab4674a660e0c97eaf60775362bc7 upstream. |
| |
| If a process is interrupted while accessing the crypto device and the |
| global ap_perms_mutex is contented, release() could return early and |
| fail to free related resources. |
| |
| Fixes: 00fab2350e6b ("s390/zcrypt: multiple zcrypt device nodes support") |
| Cc: <stable@vger.kernel.org> # 4.19 |
| Cc: Harald Freudenberger <freude@linux.ibm.com> |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> |
| Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/s390/crypto/zcrypt_api.c b/drivers/s390/crypto/zcrypt_api.c |
| index 1058b4b5cc1e..35a0e9569239 100644 |
| --- a/drivers/s390/crypto/zcrypt_api.c |
| +++ b/drivers/s390/crypto/zcrypt_api.c |
| @@ -539,8 +539,7 @@ static int zcrypt_release(struct inode *inode, struct file *filp) |
| if (filp->f_inode->i_cdev == &zcrypt_cdev) { |
| struct zcdn_device *zcdndev; |
| |
| - if (mutex_lock_interruptible(&ap_perms_mutex)) |
| - return -ERESTARTSYS; |
| + mutex_lock(&ap_perms_mutex); |
| zcdndev = find_zcdndev_by_devt(filp->f_inode->i_rdev); |
| mutex_unlock(&ap_perms_mutex); |
| if (zcdndev) { |
| -- |
| 2.7.4 |
| |