Re: [PATCH] ata: pata_legacy: fix pdc20230_set_piomode()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/29/22 06:07, Sergey Shtylyov wrote:
> Clang gives a warning when compiling pata_legacy.c with 'make W=1' about
> the 'rt' local variable in pdc20230_set_piomode() being set but unused.
> Quite obviously, there is an outb() call missing to write back the updated
> variable. Moreover, checking the docs by Petr Soucek revealed that bitwise
> AND should have been done with a negated timing mask and the master/slave
> timing masks were swapped while updating...
> 
> Fixes: 669a5db411d8 ("[libata] Add a bunch of PATA drivers.")
> Reported-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx>
> Signed-off-by: Sergey Shtylyov <s.shtylyov@xxxxxx>

Applied to for-6.1-fixes. Thanks !

> 
> ---
>  drivers/ata/pata_legacy.c |    5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> Index: libata/drivers/ata/pata_legacy.c
> ===================================================================
> --- libata.orig/drivers/ata/pata_legacy.c
> +++ libata/drivers/ata/pata_legacy.c
> @@ -315,9 +315,10 @@ static void pdc20230_set_piomode(struct
>  	outb(inb(0x1F4) & 0x07, 0x1F4);
>  
>  	rt = inb(0x1F3);
> -	rt &= 0x07 << (3 * adev->devno);
> +	rt &= ~(0x07 << (3 * !adev->devno));
>  	if (pio)
> -		rt |= (1 + 3 * pio) << (3 * adev->devno);
> +		rt |= (1 + 3 * pio) << (3 * !adev->devno);
> +	outb(rt, 0x1F3);
>  
>  	udelay(100);
>  	outb(inb(0x1F2) | 0x01, 0x1F2);

-- 
Damien Le Moal
Western Digital Research




[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux