From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753790AbdDDJzZ (ORCPT ); Tue, 4 Apr 2017 05:55:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58020 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752603AbdDDJy0 (ORCPT ); Tue, 4 Apr 2017 05:54:26 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 5ED6981227 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=hdegoede@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 5ED6981227 Subject: Re: [PATCH 1/2] platform/x86: silead_dmi - do not treat all devices as i2c_clients To: Dmitry Torokhov References: <20170404032514.31832-1-dmitry.torokhov@gmail.com> Cc: Darren Hart , Andy Shevchenko , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org From: Hans de Goede Message-ID: <410e176d-7609-b38c-cd95-2284d152a82c@redhat.com> Date: Tue, 4 Apr 2017 11:54:24 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <20170404032514.31832-1-dmitry.torokhov@gmail.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 04 Apr 2017 09:54:26 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 04-04-17 05:25, Dmitry Torokhov wrote: > I2C bus has both i2c clients and adapter devices, so we must be careful in > notifier code and verify that we are actually dealing with an i2c client > before using it as such. > > Fixes: cef9dd85acd7 ("platform/x86: add support for devices with Silead...") > Signed-off-by: Dmitry Torokhov Thank you for fixing this, patch looks good to me: Reviewed-by: Hans de Goede Regards, Hans > --- > drivers/platform/x86/silead_dmi.c | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/drivers/platform/x86/silead_dmi.c b/drivers/platform/x86/silead_dmi.c > index 02e11fdbf375..7f1049951d1c 100644 > --- a/drivers/platform/x86/silead_dmi.c > +++ b/drivers/platform/x86/silead_dmi.c > @@ -75,9 +75,8 @@ static const struct dmi_system_id silead_ts_dmi_table[] = { > { }, > }; > > -static void silead_ts_dmi_add_props(struct device *dev) > +static void silead_ts_dmi_add_props(struct i2c_client *client) > { > - struct i2c_client *client = to_i2c_client(dev); > const struct dmi_system_id *dmi_id; > const struct silead_ts_dmi_data *ts_data; > int error; > @@ -87,11 +86,13 @@ static void silead_ts_dmi_add_props(struct device *dev) > return; > > ts_data = dmi_id->driver_data; > - if (has_acpi_companion(dev) && > + if (has_acpi_companion(&client->dev) && > !strncmp(ts_data->acpi_name, client->name, I2C_NAME_SIZE)) { > - error = device_add_properties(dev, ts_data->properties); > + error = device_add_properties(&client->dev, > + ts_data->properties); > if (error) > - dev_err(dev, "failed to add properties: %d\n", error); > + dev_err(&client->dev, > + "failed to add properties: %d\n", error); > } > } > > @@ -99,10 +100,13 @@ static int silead_ts_dmi_notifier_call(struct notifier_block *nb, > unsigned long action, void *data) > { > struct device *dev = data; > + struct i2c_client *client; > > switch (action) { > case BUS_NOTIFY_ADD_DEVICE: > - silead_ts_dmi_add_props(dev); > + client = i2c_verify_client(dev); > + if (client) > + silead_ts_dmi_add_props(client); > break; > > default: >