lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 23 Nov 2021 12:12:06 -0800
From:   Lizhi Hou <lizhi.hou@...inx.com>
To:     Greg KH <gregkh@...uxfoundation.org>,
        Lizhi Hou <lizhi.hou@...inx.com>
CC:     <linux-kernel@...r.kernel.org>, <linux-serial@...r.kernel.org>,
        <jacmet@...site.dk>
Subject: Re: [PATCH 1/1] tty: serial: uartlite: allow 64 bit address


On 11/23/21 10:59 AM, Greg KH wrote:
>
> On Tue, Nov 23, 2021 at 10:45:06AM -0800, Lizhi Hou wrote:
>> Fix the uartlite probe failure when it is mapped to address above 4G.
> Fix it how?

Does this detail comment look ok to you?

The base address of uartlite registers could be 64 bit address which is 
from device resource. When ulite_probe() calls ulite_assign(), this 64 
bit address is casted to 32-bit. The fix is to replace "u32" type with 
"phys_addr_t" type for the base address in ulite_assign() argument list.

>
>> Signed-off-by: Lizhi Hou <lizhi.hou@...inx.com>
> What commit caused this problem?  What commit does this fix?  Should it
> go to stable kernels?

I searched the history. This problem was introduced by 
https://github.com/torvalds/linux/commit/8fa7b6100693e0b648ffd34564f6f41226502a19

And yes, I agree this should go to stable kernels. I will add 
stable@...r.kernel.org to cc list.

>
>> ---
>>   drivers/tty/serial/uartlite.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/tty/serial/uartlite.c b/drivers/tty/serial/uartlite.c
>> index d3d9566e5dbd..e1fa52d31474 100644
>> --- a/drivers/tty/serial/uartlite.c
>> +++ b/drivers/tty/serial/uartlite.c
>> @@ -626,7 +626,7 @@ static struct uart_driver ulite_uart_driver = {
>>    *
>>    * Returns: 0 on success, <0 otherwise
>>    */
>> -static int ulite_assign(struct device *dev, int id, u32 base, int irq,
>> +static int ulite_assign(struct device *dev, int id, phys_addr_t base, int irq,
>>                        struct uartlite_data *pdata)
> So you changed the variable type which does what exactly here?

ulite_probe()

    -> ulite_assign(&pdev->dev, id, res->start, irq, pdata)

                                                        ^^^^^^ could be 
64-bit address. Thus "u32 base" may lose the high 32-bit.

Hopefully this makes sense to you. And I can re-submit an updated patch.

Thanks,

Lizhi

>
> thanks,
>
> greg k-h

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ