lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120911061901.GA24260@avionic-0098.mockup.avionic-design.de>
Date:	Tue, 11 Sep 2012 08:19:01 +0200
From:	Thierry Reding <thierry.reding@...onic-design.de>
To:	Tushar Behera <tushar.behera@...aro.org>
Cc:	linux-kernel@...r.kernel.org, sachin.kamat@...aro.org,
	patches@...aro.org
Subject: Re: [PATCH] pwm: Fix compilation error when CONFIG_PWM is not defined

On Tue, Sep 11, 2012 at 11:34:24AM +0530, Tushar Behera wrote:
> As per Documentation/pwm.txt, PWM_LOOKUP and pwm_add_table are used in
> board support files to add PWM chip entries. Currently these
> definitions are protected within CONFIG_PWM macro in
> include/linux/pwm.h.
> 
> Otherwise, we have to add ifdef's in machine file to fix following
> compilation error.
> 
> error: array type has incomplete element type
> error: implicit declaration of function ‘PWM_LOOKUP’ [-Werror=implicit-function-declaration]
> error: implicit declaration of function ‘pwm_add_table’ [-Werror=implicit-function-declaration]
> error: bit-field ‘<anonymous>’ width not an integer constant

I think it would make more sense to have the board's Kconfig option
select PWM instead. After all if you're defining a lookup table you
probably want to use it as well.

Eventually I was going to rework the pwm.h a bit to safely compile
out if the PWM symbol is not selected, similar to how the GPIO or
clock subsystems do this. Something like your patch will be part of
that but more needs to be done. If you feel up to it, maybe you can
take this patch further and provide dummies for all the remaining
functions as well.

If you do that, one additional comment below.

> Reported-by: Sachin Kamat <sachin.kamat@...aro.org>
> Signed-off-by: Tushar Behera <tushar.behera@...aro.org>
> ---
>  include/linux/pwm.h |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/include/linux/pwm.h b/include/linux/pwm.h
> index 21d076c..87e7f45 100644
> --- a/include/linux/pwm.h
> +++ b/include/linux/pwm.h
> @@ -124,6 +124,7 @@ struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
>  
>  struct pwm_device *pwm_get(struct device *dev, const char *consumer);
>  void pwm_put(struct pwm_device *pwm);
> +#endif
>  
>  struct pwm_lookup {
>  	struct list_head list;
> @@ -141,8 +142,10 @@ struct pwm_lookup {
>  		.con_id = _con_id,			\
>  	}
>  
> +#ifdef CONFIG_PWM
>  void pwm_add_table(struct pwm_lookup *table, size_t num);
> -
> +#else
> +static void pwm_add_table(struct pwm_lookup *table, size_t num) {}
>  #endif

This should be "static inline" and I prefer to have the {} on separate
lines.

Thierry

Content of type "application/pgp-signature" skipped

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ