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]
Date:	Mon, 13 Jul 2015 10:31:57 +0100
From:	James Hogan <james.hogan@...tec.com>
To:	Bjorn Helgaas <bhelgaas@...gle.com>,
	Ralf Baechle <ralf@...ux-mips.org>
CC:	Andrew Bresticker <abrestic@...omium.org>,
	<linux-mips@...ux-mips.org>, <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 7/9] MIPS: Remove "weak" from get_c0_fdc_int() declaration

On 13/07/15 00:11, Bjorn Helgaas wrote:
> Weak header file declarations are error-prone because they make every
> definition weak, and the linker chooses one based on link order (see
> 10629d711ed7 ("PCI: Remove __weak annotation from pcibios_get_phb_of_node
> decl")).
> 
> get_c0_fdc_int() is defined only in arch/mips/mti-malta/malta-time.c so

well, until 6b5e741e9a83 ("MIPS: Pistachio: Support CDMM & Fast Debug
Channel") in v4.2-rc2 ;-)

> there's no problem with multiple definitions.  But it works better to have
> a weak default implementation and allow a strong function to override it.
> Then we don't have to test whether a definition is present, and if there
> are ever multiple strong definitions, we get a link error instead of
> calling a random definition.
> 
> Add a weak get_c0_fdc_int() definition with the default code and remove the
> weak annotation from the declaration.
> 
> Signed-off-by: Bjorn Helgaas <bhelgaas@...gle.com>
> CC: James Hogan <james.hogan@...tec.com>

Reviewed-by: James Hogan <james.hogan@...tec.com>

Thanks
James

> ---
>  arch/mips/include/asm/irq.h  |    2 +-
>  drivers/tty/mips_ejtag_fdc.c |    9 ++++++---
>  2 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h
> index f0db99f8..15e0fec 100644
> --- a/arch/mips/include/asm/irq.h
> +++ b/arch/mips/include/asm/irq.h
> @@ -49,7 +49,7 @@ extern int cp0_compare_irq_shift;
>  extern int cp0_perfcount_irq;
>  extern int cp0_fdc_irq;
>  
> -extern int __weak get_c0_fdc_int(void);
> +extern int get_c0_fdc_int(void);
>  
>  void arch_trigger_all_cpu_backtrace(bool);
>  #define arch_trigger_all_cpu_backtrace arch_trigger_all_cpu_backtrace
> diff --git a/drivers/tty/mips_ejtag_fdc.c b/drivers/tty/mips_ejtag_fdc.c
> index 358323c..a8c8cfd 100644
> --- a/drivers/tty/mips_ejtag_fdc.c
> +++ b/drivers/tty/mips_ejtag_fdc.c
> @@ -879,6 +879,11 @@ static const struct tty_operations mips_ejtag_fdc_tty_ops = {
>  	.chars_in_buffer	= mips_ejtag_fdc_tty_chars_in_buffer,
>  };
>  
> +int __weak get_c0_fdc_int(void)
> +{
> +	return -1;
> +}
> +
>  static int mips_ejtag_fdc_tty_probe(struct mips_cdmm_device *dev)
>  {
>  	int ret, nport;
> @@ -967,9 +972,7 @@ static int mips_ejtag_fdc_tty_probe(struct mips_cdmm_device *dev)
>  	wake_up_process(priv->thread);
>  
>  	/* Look for an FDC IRQ */
> -	priv->irq = -1;
> -	if (get_c0_fdc_int)
> -		priv->irq = get_c0_fdc_int();
> +	priv->irq = get_c0_fdc_int();
>  
>  	/* Try requesting the IRQ */
>  	if (priv->irq >= 0) {
> 


Download attachment "signature.asc" of type "application/pgp-signature" (820 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ