2020-03-07 13:21:46

by Phong Tran

[permalink] [raw]
Subject: [PATCH] scsi: aacraid: fix -Wcast-function-type

correct usage prototype of callback scsi_cmnd.scsi_done()
Report by: https://github.com/KSPP/linux/issues/20

Signed-off-by: Phong Tran <[email protected]>
---
drivers/scsi/aacraid/aachba.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index 33dbc051bff9..92a1058df3f5 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -798,6 +798,11 @@ static int aac_probe_container_callback1(struct scsi_cmnd * scsicmd)
return 0;
}

+static void aac_probe_container_scsi_done(struct scsi_cmnd *scsi_cmnd)
+{
+ aac_probe_container_callback1(scsi_cmnd);
+}
+
int aac_probe_container(struct aac_dev *dev, int cid)
{
struct scsi_cmnd *scsicmd = kmalloc(sizeof(*scsicmd), GFP_KERNEL);
@@ -810,7 +815,7 @@ int aac_probe_container(struct aac_dev *dev, int cid)
return -ENOMEM;
}
scsicmd->list.next = NULL;
- scsicmd->scsi_done = (void (*)(struct scsi_cmnd*))aac_probe_container_callback1;
+ scsicmd->scsi_done = (void (*)(struct scsi_cmnd *))aac_probe_container_scsi_done;

scsicmd->device = scsidev;
scsidev->sdev_state = 0;
--
2.20.1


2020-03-07 16:36:52

by Bart Van Assche

[permalink] [raw]
Subject: Re: [PATCH] scsi: aacraid: fix -Wcast-function-type

On 2020-03-07 05:21, Phong Tran wrote:
> correct usage prototype of callback scsi_cmnd.scsi_done()
> Report by: https://github.com/KSPP/linux/issues/20
>
> Signed-off-by: Phong Tran <[email protected]>
> ---
> drivers/scsi/aacraid/aachba.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
> index 33dbc051bff9..92a1058df3f5 100644
> --- a/drivers/scsi/aacraid/aachba.c
> +++ b/drivers/scsi/aacraid/aachba.c
> @@ -798,6 +798,11 @@ static int aac_probe_container_callback1(struct scsi_cmnd * scsicmd)
> return 0;
> }
>
> +static void aac_probe_container_scsi_done(struct scsi_cmnd *scsi_cmnd)
> +{
> + aac_probe_container_callback1(scsi_cmnd);
> +}
> +
> int aac_probe_container(struct aac_dev *dev, int cid)
> {
> struct scsi_cmnd *scsicmd = kmalloc(sizeof(*scsicmd), GFP_KERNEL);
> @@ -810,7 +815,7 @@ int aac_probe_container(struct aac_dev *dev, int cid)
> return -ENOMEM;
> }
> scsicmd->list.next = NULL;
> - scsicmd->scsi_done = (void (*)(struct scsi_cmnd*))aac_probe_container_callback1;
> + scsicmd->scsi_done = (void (*)(struct scsi_cmnd *))aac_probe_container_scsi_done;
>
> scsicmd->device = scsidev;
> scsidev->sdev_state = 0;
>

Since the above cast is not necessary, please remove it.

Thanks,

Bart.

2020-03-08 02:03:52

by Phong Tran

[permalink] [raw]
Subject: [PATCH v2] scsi: aacraid: fix -Wcast-function-type

correct usage prototype of callback scsi_cmnd.scsi_done()
Report by: https://github.com/KSPP/linux/issues/20

Signed-off-by: Phong Tran <[email protected]>
---
drivers/scsi/aacraid/aachba.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index 33dbc051bff9..20ca3647d211 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -798,6 +798,11 @@ static int aac_probe_container_callback1(struct scsi_cmnd * scsicmd)
return 0;
}

+static void aac_probe_container_scsi_done(struct scsi_cmnd *scsi_cmnd)
+{
+ aac_probe_container_callback1(scsi_cmnd);
+}
+
int aac_probe_container(struct aac_dev *dev, int cid)
{
struct scsi_cmnd *scsicmd = kmalloc(sizeof(*scsicmd), GFP_KERNEL);
@@ -810,7 +815,7 @@ int aac_probe_container(struct aac_dev *dev, int cid)
return -ENOMEM;
}
scsicmd->list.next = NULL;
- scsicmd->scsi_done = (void (*)(struct scsi_cmnd*))aac_probe_container_callback1;
+ scsicmd->scsi_done = aac_probe_container_scsi_done;

scsicmd->device = scsidev;
scsidev->sdev_state = 0;
--
2.20.1

2020-03-08 02:09:54

by Phong Tran

[permalink] [raw]
Subject: Re: [PATCH] scsi: aacraid: fix -Wcast-function-type



On 3/7/20 11:35 PM, Bart Van Assche wrote:
> On 2020-03-07 05:21, Phong Tran wrote:
>> correct usage prototype of callback scsi_cmnd.scsi_done()
>> Report by: https://github.com/KSPP/linux/issues/20
>>
>> Signed-off-by: Phong Tran <[email protected]>
>> ---
>> drivers/scsi/aacraid/aachba.c | 7 ++++++-
>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
>> index 33dbc051bff9..92a1058df3f5 100644
>> --- a/drivers/scsi/aacraid/aachba.c
>> +++ b/drivers/scsi/aacraid/aachba.c
>> @@ -798,6 +798,11 @@ static int aac_probe_container_callback1(struct scsi_cmnd * scsicmd)
>> return 0;
>> }
>>
>> +static void aac_probe_container_scsi_done(struct scsi_cmnd *scsi_cmnd)
>> +{
>> + aac_probe_container_callback1(scsi_cmnd);
>> +}
>> +
>> int aac_probe_container(struct aac_dev *dev, int cid)
>> {
>> struct scsi_cmnd *scsicmd = kmalloc(sizeof(*scsicmd), GFP_KERNEL);
>> @@ -810,7 +815,7 @@ int aac_probe_container(struct aac_dev *dev, int cid)
>> return -ENOMEM;
>> }
>> scsicmd->list.next = NULL;
>> - scsicmd->scsi_done = (void (*)(struct scsi_cmnd*))aac_probe_container_callback1;
>> + scsicmd->scsi_done = (void (*)(struct scsi_cmnd *))aac_probe_container_scsi_done;
>>
>> scsicmd->device = scsidev;
>> scsidev->sdev_state = 0;
>>
>
> Since the above cast is not necessary, please remove it.
>

yes, sent v2.

Regards,

Phong.

> Thanks,
>
> Bart.
>

2020-03-08 02:24:06

by Bart Van Assche

[permalink] [raw]
Subject: Re: [PATCH v2] scsi: aacraid: fix -Wcast-function-type

On 2020-03-07 18:01, Phong Tran wrote:
> correct usage prototype of callback scsi_cmnd.scsi_done()
> Report by: https://github.com/KSPP/linux/issues/20

This description is confusing. I think a better description would have
been "Make the aacraid driver -Wcast-function-type clean."

Anyway:

Reviewed-by: Bart van Assche <[email protected]>




2020-03-09 09:25:51

by John Garry

[permalink] [raw]
Subject: Re: [PATCH v2] scsi: aacraid: fix -Wcast-function-type

On 08/03/2020 02:01, Phong Tran wrote:
> correct usage prototype of callback scsi_cmnd.scsi_done()
> Report by: https://github.com/KSPP/linux/issues/20
>

no harm to add:

drivers/scsi/aacraid/aachba.c:813:23: warning: cast between incompatible
function types from ‘int (*)(struct scsi_cmnd *)’ to ‘void (*)(struct
scsi_cmnd *)’ [-Wcast-function-type]


> Signed-off-by: Phong Tran <[email protected]>
> ---
> drivers/scsi/aacraid/aachba.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
> index 33dbc051bff9..20ca3647d211 100644
> --- a/drivers/scsi/aacraid/aachba.c
> +++ b/drivers/scsi/aacraid/aachba.c
> @@ -798,6 +798,11 @@ static int aac_probe_container_callback1(struct scsi_cmnd * scsicmd)
> return 0;
> }
>
> +static void aac_probe_container_scsi_done(struct scsi_cmnd *scsi_cmnd)

supernit: double whitespace

> +{
> + aac_probe_container_callback1(scsi_cmnd);
> +}
> +
> int aac_probe_container(struct aac_dev *dev, int cid)
> {
> struct scsi_cmnd *scsicmd = kmalloc(sizeof(*scsicmd), GFP_KERNEL);
> @@ -810,7 +815,7 @@ int aac_probe_container(struct aac_dev *dev, int cid)
> return -ENOMEM;
> }
> scsicmd->list.next = NULL;
> - scsicmd->scsi_done = (void (*)(struct scsi_cmnd*))aac_probe_container_callback1;
> + scsicmd->scsi_done = aac_probe_container_scsi_done;
>
> scsicmd->device = scsidev;
> scsidev->sdev_state = 0;
>

2020-03-09 15:54:05

by Phong Tran

[permalink] [raw]
Subject: [PATCH v3] scsi: aacraid: cleanup warning cast-function-type

Make the aacraid driver -Wcast-function-type clean
Report by: https://github.com/KSPP/linux/issues/20

drivers/scsi/aacraid/aachba.c:813:23:
warning: cast between incompatible function types from
'int (*)(struct scsi_cmnd *)' to 'void (*)(struct scsi_cmnd *)'
[-Wcast-function-type]

Reviewed-by: Bart van Assche <[email protected]>
Signed-off-by: Phong Tran <[email protected]>
---
drivers/scsi/aacraid/aachba.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index 33dbc051bff9..ebfb42af67f5 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -798,6 +798,11 @@ static int aac_probe_container_callback1(struct scsi_cmnd * scsicmd)
return 0;
}

+static void aac_probe_container_scsi_done(struct scsi_cmnd *scsi_cmnd)
+{
+ aac_probe_container_callback1(scsi_cmnd);
+}
+
int aac_probe_container(struct aac_dev *dev, int cid)
{
struct scsi_cmnd *scsicmd = kmalloc(sizeof(*scsicmd), GFP_KERNEL);
@@ -810,7 +815,7 @@ int aac_probe_container(struct aac_dev *dev, int cid)
return -ENOMEM;
}
scsicmd->list.next = NULL;
- scsicmd->scsi_done = (void (*)(struct scsi_cmnd*))aac_probe_container_callback1;
+ scsicmd->scsi_done = aac_probe_container_scsi_done;

scsicmd->device = scsidev;
scsidev->sdev_state = 0;
--
2.20.1

2020-03-09 16:19:02

by Kees Cook

[permalink] [raw]
Subject: Re: [PATCH v3] scsi: aacraid: cleanup warning cast-function-type

On Mon, Mar 09, 2020 at 10:53:19PM +0700, Phong Tran wrote:
> Make the aacraid driver -Wcast-function-type clean
> Report by: https://github.com/KSPP/linux/issues/20
>
> drivers/scsi/aacraid/aachba.c:813:23:
> warning: cast between incompatible function types from
> 'int (*)(struct scsi_cmnd *)' to 'void (*)(struct scsi_cmnd *)'
> [-Wcast-function-type]
>
> Reviewed-by: Bart van Assche <[email protected]>
> Signed-off-by: Phong Tran <[email protected]>

Reviewed-by: Kees Cook <[email protected]>

-Kees

> ---
> drivers/scsi/aacraid/aachba.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
> index 33dbc051bff9..ebfb42af67f5 100644
> --- a/drivers/scsi/aacraid/aachba.c
> +++ b/drivers/scsi/aacraid/aachba.c
> @@ -798,6 +798,11 @@ static int aac_probe_container_callback1(struct scsi_cmnd * scsicmd)
> return 0;
> }
>
> +static void aac_probe_container_scsi_done(struct scsi_cmnd *scsi_cmnd)
> +{
> + aac_probe_container_callback1(scsi_cmnd);
> +}
> +
> int aac_probe_container(struct aac_dev *dev, int cid)
> {
> struct scsi_cmnd *scsicmd = kmalloc(sizeof(*scsicmd), GFP_KERNEL);
> @@ -810,7 +815,7 @@ int aac_probe_container(struct aac_dev *dev, int cid)
> return -ENOMEM;
> }
> scsicmd->list.next = NULL;
> - scsicmd->scsi_done = (void (*)(struct scsi_cmnd*))aac_probe_container_callback1;
> + scsicmd->scsi_done = aac_probe_container_scsi_done;
>
> scsicmd->device = scsidev;
> scsidev->sdev_state = 0;
> --
> 2.20.1
>

--
Kees Cook

2020-03-11 02:39:51

by Martin K. Petersen

[permalink] [raw]
Subject: Re: [PATCH v3] scsi: aacraid: cleanup warning cast-function-type


Phong,

> Make the aacraid driver -Wcast-function-type clean Report by:
> https://github.com/KSPP/linux/issues/20

Applied to 5.7/scsi-queue, thanks!

--
Martin K. Petersen Oracle Linux Engineering