All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@gmail.com>
To: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Cc: Wolfram Sang <wsa@the-dreams.de>,
	linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org,
	gregkh@linuxfoundation.org
Subject: Re: [PATCH] i2c: i2c-core: do not use bus internal data
Date: Mon, 14 Mar 2016 10:18:19 +0100	[thread overview]
Message-ID: <20160314091819.GA27975@ulmo> (raw)
In-Reply-To: <1457351357-13457-1-git-send-email-sudipm.mukherjee@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2228 bytes --]

On Mon, Mar 07, 2016 at 05:19:17PM +0530, Sudip Mukherjee wrote:
> The variable p is a data structure which is used by the driver core
> internally and it is not expected that busses will be directly accessing
> these driver core internal only data.
> 
> Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
> ---
> 
> Reference of Greg's comment about it at:
> https://lkml.org/lkml/2016/3/5/171
> 
>  drivers/i2c/i2c-core.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index 2949ab3..2f31fb5 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -73,6 +73,7 @@ static struct device_type i2c_client_type;
>  static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver);
>  
>  static struct static_key i2c_trace_msg = STATIC_KEY_INIT_FALSE;
> +static bool is_registered;
>  
>  void i2c_transfer_trace_reg(void)
>  {
> @@ -1529,7 +1530,7 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
>  	int res = 0;
>  
>  	/* Can't register until after driver model init */
> -	if (unlikely(WARN_ON(!i2c_bus_type.p))) {
> +	if (unlikely(WARN_ON(!is_registered))) {
>  		res = -EAGAIN;
>  		goto out_list;
>  	}
> @@ -1926,7 +1927,7 @@ int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
>  	int res;
>  
>  	/* Can't register until after driver model init */
> -	if (unlikely(WARN_ON(!i2c_bus_type.p)))
> +	if (unlikely(WARN_ON(!is_registered)))
>  		return -EAGAIN;
>  
>  	/* add the driver to the list of i2c drivers in the driver core */
> @@ -2118,6 +2119,7 @@ static int __init i2c_init(void)
>  	if (IS_ENABLED(CONFIG_OF_DYNAMIC))
>  		WARN_ON(of_reconfig_notifier_register(&i2c_of_notifier));
>  
> +	is_registered = true;
>  	return 0;
>  
>  class_err:

This doesn't work. I see a number of these WARN_ON()s trigger and I
think the reason is that i2c_init() always fails now. The cause seems to
be that i2c_init() calls i2c_add_driver(&dummy_driver), which will now
always fail, because is_register is set to true *after* that call. There
is no way I see I2C working at all after this patch.

Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  parent reply	other threads:[~2016-03-14  9:18 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-07 11:49 [PATCH] i2c: i2c-core: do not use bus internal data Sudip Mukherjee
2016-03-07 16:57 ` Greg KH
2016-03-07 17:17   ` Sudip Mukherjee
2016-03-12 15:14 ` Wolfram Sang
2016-03-14  9:18 ` Thierry Reding [this message]
2016-03-14  9:27   ` Thierry Reding
2016-03-14 12:15     ` Sudeep Holla
2016-03-14  9:28   ` Wolfram Sang
2016-03-14  9:39     ` Thierry Reding
2016-03-14 14:25     ` Sudip Mukherjee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160314091819.GA27975@ulmo \
    --to=thierry.reding@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sudipm.mukherjee@gmail.com \
    --cc=wsa@the-dreams.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.