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
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.
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
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.
>
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]>
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;
>
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
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
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