Received: by 10.223.185.116 with SMTP id b49csp3333173wrg; Tue, 13 Feb 2018 00:45:23 -0800 (PST) X-Google-Smtp-Source: AH8x227eso2emlD26MMkUPCnFpV17gHpq0gvnFSCzL9Nlcjai3o2NLsCOate2JalNzdDoYHfNSW2 X-Received: by 2002:a17:902:6e01:: with SMTP id u1-v6mr461985plk.12.1518511523250; Tue, 13 Feb 2018 00:45:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518511523; cv=none; d=google.com; s=arc-20160816; b=oXd0bpO2+threheZujilJVZM4pAazSzkZS5V0XA3v+b1hIj9oU+bdAbEk7x/bG6R5G uq6Ruaj3l1A9ZSMPExLkqf66+PPhoZS++fUGJRIrlH/dmNG8r63ckpXFNPbwNpG+qDxE 5dFV2wDdQkCQhQU22ajX6aKpV7u22a3lYOZkcPJKXQIWklzqs2e2IfHsWBPsJ19HyAFM EjGoQnFvAzD+prbyLyCruyg2Ussyall/xQb8CvNceXb02aJT2+6MrZPFZwHH4XEHbPyb VN4p6NBg1pInR9HZYxaRSwb/s5/7BNn3zc4SQ/4PFbc6yVdAIEVukvwbs5uNwuE6+fZQ f25w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=hxxkudYO3WYN/pXFJNBPpXbvLhVRcjWIcOt8JSvvZJ8=; b=atqA9geGh8TP2yA8+tL/uzXUO738aG2YSxEPm1XgmHpGfRPNw0onsdbg/rg0yuUl2S VwBD6zRxDvrG3l+1vTeYvjMlxftVXQa7L+L8QNrV3wMu30gh+mvy0RRy5z8pSmmtOZD2 gRgJ0FiABJWvp7YmyG9N1jDFrT+zTM+wLslUmblFRWZdXm1CreXDUNDvGh3NUyvCooRp FgBbqOH8PJ/Pz299OWT515+TBD5AhPeCJvkkzOJtRf/Lu5EaemtEklGJYR9VWdAya3/H 70ESLT2qdwP5jJ7wFGYmo9Oll2QFh05g9HgbaRTp+Ud4vynhhWr5ggY4QVFgyhezdaBm Y5bQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=p0adqkEF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f89-v6si1138297plb.344.2018.02.13.00.45.08; Tue, 13 Feb 2018 00:45:23 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=p0adqkEF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933782AbeBMIo2 (ORCPT + 99 others); Tue, 13 Feb 2018 03:44:28 -0500 Received: from mail-lf0-f67.google.com ([209.85.215.67]:44094 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933631AbeBMIo0 (ORCPT ); Tue, 13 Feb 2018 03:44:26 -0500 Received: by mail-lf0-f67.google.com with SMTP id c188so8155721lfc.11 for ; Tue, 13 Feb 2018 00:44:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=hxxkudYO3WYN/pXFJNBPpXbvLhVRcjWIcOt8JSvvZJ8=; b=p0adqkEF4mFXw0xCc78KK03HJenDKsqgHsns0UFeaTvDG8CaLCraSCNXc3TojbBnBz uIn65YxuMiTysPeJjcD/Y8UgzQY/ClkFIEuyHY8Jh7fRnG2oY7lG3aHnVPkWu1Mng6iX y/TrqPxQ2BXXOT3nzd/CcGQybLY+lJi9BBwVzGLwMrAjtMU4fcqp9OYuLK/wRlywQ+EJ U1vtZ4OPiq8a6xo4zNZFPNlkFvjk9/wl5cG02ogatHBKUpJr1l4LByVMGcNLnlvMdkUH NXF8WMYlvEcpJwUydmT1fH9mPTOh8bUSQnF2nPrioe+94VJwPZfpTHUH/xiHP8TBJGax OC0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=hxxkudYO3WYN/pXFJNBPpXbvLhVRcjWIcOt8JSvvZJ8=; b=Q+XxbqQrAhuSWt9WHoaMRz5jbA0YY1yCsEK0oLFtBYXq+dY7pqqOvFLSf+HTJmDK9D AuU3r/V7fRnW6i6ZkxE3wVKgo39RLCB67kvUpRGog9+nnOBPIihLj28J2e5Z8yW1INBe zeut+E0LWX6Lgu0G15pyPMRFywd1Zo122LmSBgtz/2pKgulamectVNmzHLUDJXwDkg+G ZQ8CzFa6VpCabEznYWHe+d3fAOOTW4EX4WFGIvt/yFdxegxld9FQxcWycCC6qqxmKfE+ FIYSUM6v2FPx7d6f58k3eGLlQpOfiy55/x3Ok/HK7fcwRCwMQswqD4Gh7N7rQU8yFOY1 GJXg== X-Gm-Message-State: APf1xPBgMNJY4aodd/EgWRws1uN+Bnz+7Zo4tgiA07z9jVLlGHPwWjuf jIRthbO1CxETYwSKFcLkgqIEBg== X-Received: by 10.46.83.92 with SMTP id t28mr382651ljd.126.1518511465121; Tue, 13 Feb 2018 00:44:25 -0800 (PST) Received: from a2k-HP-ProDesk-600-G2-SFF.kyiv.epam.com (ll-54.209.223.85.sovam.net.ua. [85.223.209.54]) by smtp.gmail.com with ESMTPSA id t68sm2106125lfe.28.2018.02.13.00.44.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 13 Feb 2018 00:44:24 -0800 (PST) From: Oleksandr Andrushchenko To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: daniel.vetter@intel.com, gustavo@padovan.org, airlied@linux.ie, seanpaul@chromium.org, Oleksandr Andrushchenko Subject: [PATCH] drm/simple_kms_helper: Fix NULL pointer dereference with no active CRTC Date: Tue, 13 Feb 2018 10:44:16 +0200 Message-Id: <1518511456-28257-1-git-send-email-andr2000@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Oleksandr Andrushchenko It is possible that drm_simple_kms_plane_atomic_check called with no CRTC set, e.g. when user-space application sets CRTC_ID/FB_ID to 0 before doing any actual drawing. This leads to NULL pointer dereference because in this case new CRTC state is NULL and must be checked before accessing. Signed-off-by: Oleksandr Andrushchenko --- drivers/gpu/drm/drm_simple_kms_helper.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c index 9ca8a4a59b74..a05eca9cec8b 100644 --- a/drivers/gpu/drm/drm_simple_kms_helper.c +++ b/drivers/gpu/drm/drm_simple_kms_helper.c @@ -121,8 +121,10 @@ static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane, pipe = container_of(plane, struct drm_simple_display_pipe, plane); crtc_state = drm_atomic_get_new_crtc_state(plane_state->state, &pipe->crtc); - if (!crtc_state->enable) - return 0; /* nothing to check when disabling or disabled */ + + if (!crtc_state || !crtc_state->enable) + /* nothing to check when disabling or disabled or no CRTC set */ + return 0; if (crtc_state->enable) drm_mode_get_hv_timing(&crtc_state->mode, -- 2.7.4