Re: [PATCH 1/1] tty: serial: uartlite: allow 64 bit address

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

 




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@xxxxxxxxxx>
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@xxxxxxxxxxxxxxx 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



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux