Re: [PATCH] qla2xxx: rewrite code to avoid hitting gcc bug 70646

From: James Bottomley
Date: Fri Apr 15 2016 - 10:40:15 EST


On Fri, 2016-04-15 at 12:36 +0200, Denys Vlasenko wrote:
> More info here:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70646

This bug is under investigation, so I'd rather not alter code for a gcc
bug until we know if we can supply options to fix it rather than
changing code.

James


> Signed-off-by: Denys Vlasenko <dvlasenk@xxxxxxxxxx>
> CC: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx>
> CC: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
> CC: qla2xxx-upstream@xxxxxxxxxx
> CC: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
> CC: linux-scsi@xxxxxxxxxxxxxxx
> CC: linux-kernel@xxxxxxxxxxxxxxx
> ---
> drivers/scsi/qla2xxx/qla_attr.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/scsi/qla2xxx/qla_attr.c
> b/drivers/scsi/qla2xxx/qla_attr.c
> index 4dc06a13..2dd9c72 100644
> --- a/drivers/scsi/qla2xxx/qla_attr.c
> +++ b/drivers/scsi/qla2xxx/qla_attr.c
> @@ -2003,9 +2003,14 @@ static void
> qla2x00_get_host_fabric_name(struct Scsi_Host *shost)
> {
> scsi_qla_host_t *vha = shost_priv(shost);
> + /*
> + * This can trigger gcc 4.9/5.3 bug.
> + * See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70646
> uint8_t node_name[WWN_SIZE] = { 0xFF, 0xFF, 0xFF, 0xFF, \
> 0xFF, 0xFF, 0xFF, 0xFF};
> u64 fabric_name = wwn_to_u64(node_name);
> + */
> + u64 fabric_name = (u64)(s64)-1; /* the same as above */
>
> if (vha->device_flags & SWITCH_FOUND)
> fabric_name = wwn_to_u64(vha->fabric_node_name);