[lvc-project] [PATCH 5.10.y] ata: pata_sil680: fix result type of sil680_sel{dev|reg}()

Sergey Shtylyov s.shtylyov at omp.ru
Tue Apr 28 20:50:32 MSK 2026


On 4/28/26 11:15 AM, Rand Deeb wrote:

[...]

>>> From: Sergey Shtylyov <s.shtylyov at omp.ru>
>>>
>>> [ Upstream commit dafbbf5c57dd6ae01d20b894bc2200e9d9834c4e ]
>>>
>>> sil680_sel{dev|reg}() return a PCI config space address but needlessly
>>> use the *unsigned long* type for that,  whereas the PCI config space
>>> accessors take *int* for the address parameter.  Switch these functions
>>> to returning *int*, updating the local variables at their call sites.
>>> Get rid of the 'base' local variables in these functions, while at it...
>>>
>>> Found by Linux Verification Center (linuxtesting.org) with the SVACE static
>>> analysis tool.
>>>
>>> Signed-off-by: Sergey Shtylyov <s.shtylyov at omp.ru>
>>> Signed-off-by: Damien Le Moal <damien.lemoal at opensource.wdc.com>
>>> Signed-off-by: Rand Deeb <rand.sec96 at gmail.com>
>>> ---
>>>  drivers/ata/pata_sil680.c | 30 +++++++++++++-----------------
>>>  1 file changed, 13 insertions(+), 17 deletions(-)
>>>
>>> diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c
>>> index 7ab9aea3b..fe60f884b 100644
>>> --- a/drivers/ata/pata_sil680.c
>>> +++ b/drivers/ata/pata_sil680.c
>>> @@ -47,11 +47,9 @@
>>>   *     criticial.
>>>   */
>>>
>>> -static unsigned long sil680_selreg(struct ata_port *ap, int r)
>>> +static int sil680_selreg(struct ata_port *ap, int r)
>>>  {
>>> -       unsigned long base = 0xA0 + r;
>>> -       base += (ap->port_no << 4);
>>> -       return base;
>>> +       return 0xA0 + (ap->port_no << 4) + r;
>>>  }
>>>
>>>  /**
>>> @@ -64,12 +62,9 @@ static unsigned long sil680_selreg(struct ata_port *ap, int r)
>>>   *     the unit shift.
>>>   */
>>>
>>> -static unsigned long sil680_seldev(struct ata_port *ap, struct ata_device *adev, int r)
>>> +static int sil680_seldev(struct ata_port *ap, struct ata_device *adev, int r)
>>>  {
>>> -       unsigned long base = 0xA0 + r;
>>> -       base += (ap->port_no << 4);
>>> -       base |= adev->devno ? 2 : 0;
>>> -       return base;
>>> +       return 0xA0 + (ap->port_no << 4) + r + (adev->devno << 1);
>>>  }
>>
>>    And why exactly is this needed in 5.10.y?
>>
>> [...]
>> MBR, Sergey
>>
> 
> Hi Sergey,
> 
> This is a direct backport of upstream commit dafbbf5c57dd.

   I figured. :-)

> It fixes a type mismatch between the helper functions and the
> PCI config accessors (which expect int), as identified by
> static analysis (SVACE).

   Thank you for reminding me what my patch does... :-)

> The intent is to keep the code consistent and avoid issues
> flagged by tooling.

   What tooling, Svace?

> If this is not considered appropriate for 5.10.y, I’m fine
> with dropping it.

   If I considered this a fix for something, I'd have added
the Fixes tag -- then it would be worthy of backporting. Now
it's not, I think...

> Thanks

MBR, Sergey




More information about the lvc-project mailing list