Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1347833yba; Thu, 4 Apr 2019 09:01:05 -0700 (PDT) X-Google-Smtp-Source: APXvYqxHYah3fFGBIrMaVEXzmLzXT6DBO13ArXy8r8M33oPTJ/6YNUUsYB5KxkGchZ7q+VQ0OVX9 X-Received: by 2002:a62:2687:: with SMTP id m129mr6640045pfm.204.1554393665426; Thu, 04 Apr 2019 09:01:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554393665; cv=none; d=google.com; s=arc-20160816; b=bqQqr+VuO0u5M+u7XVwzZY/sr00TXNyT2JJaZyx5ohy1X8SpUo9znSiSotK8/ujjgc JEj6wObO/a7Hzcv4RWjzptLsZqFw7GPjXXJnuG0vbpgaBkuTV5w20ksTsBzNzSWFPOWk Az9JoyQ+C6NknmvBX4/7l99N9iwruIvQJ1y/ooaMtlpGmKJqs6G13uhiUC4jTyhFtp1X Qra09Orw61+EvjO+JRCli+fADpH8HVdyfVU8o/VRY6BoaCCOk/xaLw6pd/dxAPxREFAz /T3Oe1wdWGYSi9ced3d66d4nfYqVo2SBbxmES+W7kvoMy+VY7gQZ+/Wt+qjVyOz7Rgdk 49UQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=UKZUuNxE2XJZtIURFNQMaVLPXWArE1bGhRGvq9+Yjsk=; b=akrbuU62COAndHwN8kzlY9NVdKnrhHyMfsU6+IejV97IA3jfKHGTkScPP/foGz/NMd 5UGJo+Lj4tYOx17/GcMqBQQ5b9I7EkjuH3JFMme+pLt/nFW0h6I6dcALWKF74BUSkkxX 2ZCwtN2T6bgqViD474g//Pkw4Xw+rW2SNvp9JAVxZosAZFer5o+U+3AUgoqTr4zuIQlO YB2Q6cpqMYGR2cYg23IQaSFmgwIRo3PqoTbr2rrQiGKiTR0K0oBxpfFUNmAblh1sib4t iUb4IuWe1Bwdptrwlp3+GUXsXLFUzFHydTgmobXgBoINRCilBWNj43j1qXX0W17KquHr RSNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=lRihCIzm; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d33si16880058pla.315.2019.04.04.09.00.49; Thu, 04 Apr 2019 09:01:05 -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=@google.com header.s=20161025 header.b=lRihCIzm; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728623AbfDDQAN (ORCPT + 99 others); Thu, 4 Apr 2019 12:00:13 -0400 Received: from mail-oi1-f193.google.com ([209.85.167.193]:37859 "EHLO mail-oi1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726888AbfDDQAN (ORCPT ); Thu, 4 Apr 2019 12:00:13 -0400 Received: by mail-oi1-f193.google.com with SMTP id v84so2333700oif.4 for ; Thu, 04 Apr 2019 09:00:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=UKZUuNxE2XJZtIURFNQMaVLPXWArE1bGhRGvq9+Yjsk=; b=lRihCIzmEYvDVh/7D3Secm48UdD4EZ2zyNzAEhZxgfwc/NLBuTNV9YVqgnWvgKG5DC PGcESvwjTBLG1ECExKz1QcVkZ2o5UtDJZnpEkAKHkFAChUY9lTmT29K3w4ZgLddUvou7 6+ZUjp+159HWT82yq6/egeHOt6kITdDWJjBySs1axjrtW592jvezJX/I5rP/0w1ErOYY /DGxhJ8d+sPNoXFZG3E5QCx7Zne5PkU7K4OrriYn8bKpOVKwuASgN/p73NBYKIsKfh40 6kGROwpKC/84WNb7LEEbMEViljgH5wDDLMn+P36MD9yABWuDkd/NHbPT/FDY9C3+gUHR ykJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=UKZUuNxE2XJZtIURFNQMaVLPXWArE1bGhRGvq9+Yjsk=; b=NPfacrBXcGccY2Ggo/yMvH7z3opYPvEWNbfVPDaPTzVSUahk5sugTbTkAi1A3bDkQk w0cMCiL0eoTVaQrgOuj3/Dcgn344ALyW1LjMS6LsyY8UEM5r6QOSK2aD7qoBaWHNaqbR HZ7wV+oovn1nannOouiPKtuUO+I2s9RUgdyWey5sKgbJvqYP//m5Fk2doqJpHqGYnq2j 10iw+vWO9qk4UKc2RUDICN1bvFKyt3covoL/DKgSuM37rUXLsUr7LeVFjFCVCcD8OALz UgUEeOukOJ6aUo+mjyVRwQkEKjhWFlSVX/X58i7/phtceJ4Fs3deWWnoG4CFrMT/Q2OE RQ4Q== X-Gm-Message-State: APjAAAUu7Gn0wXxYQZJDtBhveaI95rPgdEHnHu4uuhXsDDfeGN9d/Bb5 jFfsuL7+cAr/2gwTsUWAEx+iRxwvyAepJ7fhKegIDA== X-Received: by 2002:aca:3c8a:: with SMTP id j132mr3663926oia.38.1554393612328; Thu, 04 Apr 2019 09:00:12 -0700 (PDT) MIME-Version: 1.0 References: <20190403224036.203632-1-egranata@chromium.org> In-Reply-To: <20190403224036.203632-1-egranata@chromium.org> From: =?UTF-8?Q?Jett_=E2=9C=88_Rink?= Date: Thu, 4 Apr 2019 10:00:00 -0600 Message-ID: Subject: Re: [PATCH v2] mfd: cros_ec: check for NULL transfer function To: egranata@chromium.org Cc: Guenter Roeck , Benson Leung , gwendal@chromium.org, amstan@chromium.org, Enric Balletbo i Serra , linux-kernel Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Reviewed-by: Jett Rink On Wed, Apr 3, 2019 at 4:40 PM wrote: > > From: Enrico Granata > > As new transfer mechanisms are added to the EC codebase, they may > not support v2 of the EC protocol. > > If the v3 initial handshake transfer fails, the kernel will try > and call cmd_xfer as a fallback. If v2 is not supported, cmd_xfer > will be NULL, and the code will end up causing a kernel panic. > > Add a check for NULL before calling the transfer function, along > with a helpful comment explaining how one might end up in this > situation. > > Signed-off-by: Enrico Granata > --- > drivers/platform/chrome/cros_ec_proto.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c > index 97a068dff192d..55691656a3c27 100644 > --- a/drivers/platform/chrome/cros_ec_proto.c > +++ b/drivers/platform/chrome/cros_ec_proto.c > @@ -56,6 +56,16 @@ static int send_command(struct cros_ec_device *ec_dev, > else > xfer_fxn = ec_dev->cmd_xfer; > > + if (xfer_fxn == NULL) { > + /* This error can happen if a communication error happened and > + * the EC is trying to use protocol v2, on an underlying > + * communication mechanism that does not support v2. > + */ > + dev_err_once(ec_dev->dev, > + "missing EC transfer API, cannot send command\n"); > + return -EIO; > + } > + > ret = (*xfer_fxn)(ec_dev, msg); > if (msg->result == EC_RES_IN_PROGRESS) { > int i; > -- > 2.21.0.392.gf8f6787159e-goog >