Re: [PATCH 018/190] Revert "drm/nouveau: fix multiple instances of reference count leaks"

Greg Kroah-Hartman
2021-04-27T16:26:08Z

On Wed, Apr 21, 2021 at 02:58:13PM +0200, Greg Kroah-Hartman wrote:
> This reverts commit 659fb5f154c3434c90a34586f3b7aa1c39cf6062.
>
> Commits from @umn.edu addresses have been found to be submitted in "bad
> faith" to try to test the kernel community's ability to review "known
> malicious" changes. The result of these submissions can be found in a
> paper published at the 42nd IEEE Symposium on Security and Privacy
> entitled, "Open Source Insecurity: Stealthily Introducing
> Vulnerabilities via Hypocrite Commits" written by Qiushi Wu (University
> of Minnesota) and Kangjie Lu (University of Minnesota).
>
> Because of this, all submissions from this group must be reverted from
> the kernel tree and will need to be re-reviewed again to determine if
> they actually are a valid fix. Until that work is complete, remove this
> change to ensure that no problems are being introduced into the
> codebase.
>
> Cc: Aditya Pakki <pakki001@umn.edu>
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
> drivers/gpu/drm/nouveau/nouveau_drm.c | 8 ++------
> drivers/gpu/drm/nouveau/nouveau_gem.c | 4 +---
> 2 files changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
> index 885815ea917f..1a203b64bb67 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
> @@ -1067,10 +1067,8 @@ nouveau_drm_open(struct drm_device *dev, struct drm_file *fpriv)
>
> /* need to bring up power immediately if opening device */
> ret = pm_runtime_get_sync(dev->dev);
> - if (ret < 0 && ret != -EACCES) {
> - pm_runtime_put_autosuspend(dev->dev);
> + if (ret < 0 && ret != -EACCES)
> return ret;
> - }
>
> get_task_comm(tmpname, current);
> snprintf(name, sizeof(name), "%s[%d]", tmpname, pid_nr(fpriv->pid));
> @@ -1152,10 +1150,8 @@ nouveau_drm_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
> long ret;
>
> ret = pm_runtime_get_sync(dev->dev);
> - if (ret < 0 && ret != -EACCES) {
> - pm_runtime_put_autosuspend(dev->dev);
> + if (ret < 0 && ret != -EACCES)
> return ret;
> - }
>
> switch (_IOC_NR(cmd) - DRM_COMMAND_BASE) {
> case DRM_NOUVEAU_NVIF:
> diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
> index c88cbb85f101..195b570ee8f2 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_gem.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
> @@ -48,10 +48,8 @@ nouveau_gem_object_del(struct drm_gem_object *gem)
> int ret;
>
> ret = pm_runtime_get_sync(dev);
> - if (WARN_ON(ret < 0 && ret != -EACCES)) {
> - pm_runtime_put_autosuspend(dev);
> + if (WARN_ON(ret < 0 && ret != -EACCES))
> return;
> - }
>
> if (gem->import_attach)
> drm_prime_gem_destroy(gem, nvbo->bo.sg);
> --
> 2.31.1
>

Looks correct, dropping this.

greg k-h