On Fri, 2017-08-04 at 03:51 -0700, Raghava Aditya Renukunta wrote:
> diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
> index 707ee2f5954d..a875175d58d1 100644
> --- a/drivers/scsi/aacraid/aachba.c
> +++ b/drivers/scsi/aacraid/aachba.c
> @@ -549,7 +549,9 @@ static void get_container_name_callback(void *context,
> struct fib * fibptr)
> if ((le32_to_cpu(get_name_reply->status) == CT_OK)
> && (get_name_reply->data[0] != '\0')) {
> char *sp = get_name_reply->data;
> - sp[sizeof(((struct aac_get_name_resp *)NULL)->data)] = '\0';
> + int data_size = FIELD_SIZEOF(struct aac_get_name_resp, data);
> +
> + sp[data_size - 1] = '\0';
> while (*sp == ' ')
> ++sp;
> if (*sp) {
> @@ -579,12 +581,15 @@ static void get_container_name_callback(void *context,
> struct fib * fibptr)
> static int aac_get_container_name(struct scsi_cmnd * scsicmd)
> {
> int status;
> + int data_size;
> struct aac_get_name *dinfo;
> struct fib * cmd_fibcontext;
> struct aac_dev * dev;
>
> dev = (struct aac_dev *)scsicmd->device->host->hostdata;
>
> + data_size = FIELD_SIZEOF(struct aac_get_name_resp, data);
> +
> cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd);
>
> aac_fib_init(cmd_fibcontext);
> @@ -593,7 +598,7 @@ static int aac_get_container_name(struct scsi_cmnd *
> scsicmd)
> dinfo->command = cpu_to_le32(VM_ContainerConfig);
> dinfo->type = cpu_to_le32(CT_READ_NAME);
> dinfo->cid = cpu_to_le32(scmd_id(scsicmd));
> - dinfo->count = cpu_to_le32(sizeof(((struct aac_get_name_resp
> *)NULL)->data));
> + dinfo->count = cpu_to_le32(data_size - 1);
>
> status = aac_fib_send(ContainerCommand,
> cmd_fibcontext,
> diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
> index 69812994b81e..92fabf2b0c24 100644
> --- a/drivers/scsi/aacraid/aacraid.h
> +++ b/drivers/scsi/aacraid/aacraid.h
> @@ -2275,7 +2275,7 @@ struct aac_get_name_resp {
> __le32 parm3;
> __le32 parm4;
> __le32 parm5;
> - u8 data[16];
> + u8 data[17];
> };
>
> #define CT_CID_TO_32BITS_UID 165
Hello Raghava,
This patch would have been more brief if FIELD_SIZEOF(struct aac_get_name_resp,
data)
would have been used directly instead of introducing the new local variable
'data_size'.
Anyway:
Reviewed-by: Bart Van Assche <[email protected]>