Received: by 2002:a25:86ce:0:0:0:0:0 with SMTP id y14csp2535547ybm; Thu, 23 May 2019 19:35:16 -0700 (PDT) X-Google-Smtp-Source: APXvYqyXNaeCukHjizSHuiv68yH+XpAF9riD82vqNYrjtqX9oxRS1P4FPoF3X6KreQamBpahjou1 X-Received: by 2002:a62:e0cb:: with SMTP id d72mr16243779pfm.242.1558665316175; Thu, 23 May 2019 19:35:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558665316; cv=none; d=google.com; s=arc-20160816; b=GUTUWOCCPgzwrzP0sh/a0E9WdR9jK2JpD2Zbzw23XS8xVcasvQhQG/zxPD3q7I9oAV qufMr8OIG6COb7VuVy0OB7j1FUIQErR9HWJSZFzjdSB9ryUEaHoq/zavQ/2MXxNKLaem yOAf8olknX6s5IfIw7GUJgGloz/T6Mfg8qK4jD3RMIhS3fR2EVmjGsGcJZ1MKI6ID0ng MNeentn/U5PP9xbLkVck8BSrNFjWiGTVBKGEEf4tZitwaozrpgEDyT9mS5fOqjSoafe1 kG+4csKip7C30bwIqIGPB6AkjcxkiO+i6GPAF8UWa++82lLF7YlTBgHyfTrTSBAkL2fa DdSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=mN/NXs4p7vHqDk7rTpmOP13LGQmOSI+Gshg9r4qyd1M=; b=BEJd0P4ewBodBR1ZN+fjy/iYXuk420j2T0+4Qqx9+OrA4qXOE9gXg6yQvpXoOK/QKo wzopl9OtOpjHRSvJdUiDXuY6ygKc5KcPWoRM0PMRADIs3dz/CoBIX1N25roZZDF2F7qn XpjyUBDOz2VMmDZ1gZPj3zY30AMMWeVtiJQnN9tWWiThqcQ/81lsnho00MPou/O0Vlkr 9uyUQKafmx+k/Scx8J9+RPHsF4KUFQK+0yODsy1EqB592+8y1icQF5xd71J+YjhJrybh MTvXdlLe95rmd8S1dwipnSNZrGVOtloJwM+my3WKXYLXQxoNSVCRMK+yMKYGirdZdSkl 8Qug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=bmnk0FGT; 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 f6si2102313pgs.544.2019.05.23.19.34.55; Thu, 23 May 2019 19:35:16 -0700 (PDT) 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=bmnk0FGT; 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 S1731829AbfEXCch (ORCPT + 99 others); Thu, 23 May 2019 22:32:37 -0400 Received: from mail-pl1-f196.google.com ([209.85.214.196]:46489 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727037AbfEXCch (ORCPT ); Thu, 23 May 2019 22:32:37 -0400 Received: by mail-pl1-f196.google.com with SMTP id r18so3503739pls.13 for ; Thu, 23 May 2019 19:32:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=mN/NXs4p7vHqDk7rTpmOP13LGQmOSI+Gshg9r4qyd1M=; b=bmnk0FGTthU8bpOEtEMJ2JLGJQ0K3KS/kp9cCpL9SDdg+SMeoauGDG41UP9H5XRh34 9OJ1nU3MoZO8SoAGGhCUWosmEdiNJKmHb/NQrnDG61zi/RDoDW38Vd8QyDiF8LU4RVW6 FrzliAYF+kiJDKtsb7kSqfIpAG7H/rELoWj7/TFc9wluWhH4ldnjPjtcxZlAGFyXu5i2 SmsY8BixiQpx4KIhaX5Ou/yipZdFIlC1w3f1glKkOLV1ZQUx1LAQMTPm1MFG/Dr9YfxS zO0lOIF8ZqYWjM+A+8MupS1Ri5ASW2xt6a1tcrE/L/voTVLRpjUlNM7YDEtLkknN9OYl ThuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=mN/NXs4p7vHqDk7rTpmOP13LGQmOSI+Gshg9r4qyd1M=; b=BjVLCP3IKgoG3kq+ZFbxdYCTzQR7XTXw4AgyuaqxizboqxzeFnpxW5K2QNoWDm6KPH VaN7fPH2D+YLd2TllDl7pqcPI+FwM+WeAGP+Yd7uA/8yb24s2/cjS9nrdww9RRufuQQh KBJFc6utd47LQTZJqCC+f5ISgKHAX+keiqF4lO0K2e4Mo5IQJkw1+RAmY7O3xl+qmqxL y9qHXtnLMUgW1bBSWmPr4mJK1eM/Igd0XW/s2DWcpjbpemhwyXiMYfHXBPHTHcqivjR5 6sUZCTBUMxZjRimmIpfyXDuMRo4BvHLpToBcqfGMEQb8EvxFV3ybFntbc2jL2zRwJ6y3 bbjQ== X-Gm-Message-State: APjAAAURlHQ1jT6mz6YYE3JkbofVacOR4Q933haiXSuEJIbJQA8H7plO GiGXGQQnVugvoqZfiBe+Jqw= X-Received: by 2002:a17:902:b205:: with SMTP id t5mr53350395plr.314.1558665156301; Thu, 23 May 2019 19:32:36 -0700 (PDT) Received: from zhanggen-UX430UQ ([66.42.35.75]) by smtp.gmail.com with ESMTPSA id a26sm803923pfl.177.2019.05.23.19.32.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 23 May 2019 19:32:35 -0700 (PDT) Date: Fri, 24 May 2019 10:32:22 +0800 From: Gen Zhang To: maarten.lankhorst@linux.intel.com, maxime.ripard@bootlin.com Cc: jani.nikula@linux.intel.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm_edid-load: Fix a missing-check bug in drm_load_edid_firmware() Message-ID: <20190524023222.GA5302@zhanggen-UX430UQ> References: <20190522123920.GB6772@zhanggen-UX430UQ> <87o93u7d3s.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87o93u7d3s.fsf@intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In drm_load_edid_firmware(), fwstr is allocated by kstrdup(). And fwstr is dereferenced in the following codes. However, memory allocation functions such as kstrdup() may fail and returns NULL. Dereferencing this null pointer may cause the kernel go wrong. Thus we should check this kstrdup() operation. Further, if kstrdup() returns NULL, we should return ERR_PTR(-ENOMEM) to the caller site. Signed-off-by: Gen Zhang Reviewed-by: Jani Nikula --- diff --git a/drivers/gpu/drm/drm_edid_load.c b/drivers/gpu/drm/drm_edid_load.c index a491509..a0e107a 100644 --- a/drivers/gpu/drm/drm_edid_load.c +++ b/drivers/gpu/drm/drm_edid_load.c @@ -290,6 +290,8 @@ struct edid *drm_load_edid_firmware(struct drm_connector *connector) * the last one found one as a fallback. */ fwstr = kstrdup(edid_firmware, GFP_KERNEL); + if (!fwstr) + return ERR_PTR(-ENOMEM); edidstr = fwstr; while ((edidname = strsep(&edidstr, ","))) { ---