From: Mitko Haralanov Date: Mon, 26 Oct 2015 14:28:39 +0000 (-0400) Subject: staging/rdma/hfi1: Wrong cast breaks desired pointer arithmetic X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=3c6c065a510ed59f7fddabac4be2f932ecfe9275;p=linux-beck.git staging/rdma/hfi1: Wrong cast breaks desired pointer arithmetic The address being mapped into a process's memory for notification events was improperly calculated due to cast that was happening too early. dd->events is a pointer and should have been casted to unsigned long after the pointer arithmetic was done, not before. As a result, processes were looking at the wrong place and not seeing their notification events. Signed-off-by: Mitko Haralanov Signed-off-by: Ira Weiny Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/rdma/hfi1/file_ops.c b/drivers/staging/rdma/hfi1/file_ops.c index 955f80dfecf6..aae9826ec62b 100644 --- a/drivers/staging/rdma/hfi1/file_ops.c +++ b/drivers/staging/rdma/hfi1/file_ops.c @@ -607,9 +607,9 @@ static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma) * Use the page where this context's flags are. User level * knows where it's own bitmap is within the page. */ - memaddr = ((unsigned long)dd->events + - ((uctxt->ctxt - dd->first_user_ctxt) * - HFI1_MAX_SHARED_CTXTS)) & PAGE_MASK; + memaddr = (unsigned long)(dd->events + + ((uctxt->ctxt - dd->first_user_ctxt) * + HFI1_MAX_SHARED_CTXTS)) & PAGE_MASK; memlen = PAGE_SIZE; /* * v3.7 removes VM_RESERVED but the effect is kept by