RDMA/cxgb3: Fix page shift calculation in build_phys_page_list()

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <git-commits-head@...>
Date: Friday, January 25, 2008 - 7:18 pm

Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d08ca2...
Commit:     d08ca26ceec4dfbcfdbada4ad728db742ccaecd1
Parent:     856b5925047d73a85557203d124d62c5eea1fbd3
Author:     Steve Wise <swise@opengridcomputing.com>
AuthorDate: Mon Jan 21 14:42:11 2008 -0600
Committer:  Roland Dreier <rolandd@cisco.com>
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 <swise@opengridcomputing.com>
    Signed-off-by: Roland Dreier <rolandd@cisco.com>
---
 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 majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
RDMA/cxgb3: Fix page shift calculation in build_phys_page_li..., Linux Kernel Mailing List..., (Fri Jan 25, 7:18 pm)