Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d08ca26ceec4dfbcfdbada4ad728db742ccaecd1
Commit:     d08ca26ceec4dfbcfdbada4ad728db742ccaecd1
Parent:     856b5925047d73a85557203d124d62c5eea1fbd3
Author:     Steve Wise <[EMAIL PROTECTED]>
AuthorDate: Mon Jan 21 14:42:11 2008 -0600
Committer:  Roland Dreier <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 14:17:45 2008 -0800

    RDMA/cxgb3: Fix page shift calculation in build_phys_page_list()
    
    The existing logic incorrectly maps this buffer list:
    
        0: addr 0x10001000, size 0x1000
        1: addr 0x10002000, size 0x1000
    
    To this bogus page list:
    
        0: 0x10000000
        1: 0x10002000
    
    The shift calculation must also take into account the address of the
    first entry masked by the page_mask as well as the last address+size
    rounded up to the next page size.
    
    Signed-off-by: Steve Wise <[EMAIL PROTECTED]>
    Signed-off-by: Roland Dreier <[EMAIL PROTECTED]>
---
 drivers/infiniband/hw/cxgb3/iwch_mem.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb3/iwch_mem.c 
b/drivers/infiniband/hw/cxgb3/iwch_mem.c
index a6c2c4b..73bfd16 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_mem.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_mem.c
@@ -122,6 +122,13 @@ int build_phys_page_list(struct ib_phys_buf *buffer_list,
                *total_size += buffer_list[i].size;
                if (i > 0)
                        mask |= buffer_list[i].addr;
+               else
+                       mask |= buffer_list[i].addr & PAGE_MASK;
+               if (i != num_phys_buf - 1)
+                       mask |= buffer_list[i].addr + buffer_list[i].size;
+               else
+                       mask |= (buffer_list[i].addr + buffer_list[i].size +
+                               PAGE_SIZE - 1) & PAGE_MASK;
        }
 
        if (*total_size > 0xFFFFFFFFULL)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to