Message ID | 1366030138-71292-4-git-send-email-huawei.libin@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On 2013/4/15 20:48, Libin wrote: > (*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented > as a inline funcion vma_pages() in linux/mm.h, so using it. > > Signed-off-by: Libin <huawei.libin@huawei.com> > --- > drivers/char/mspec.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/char/mspec.c b/drivers/char/mspec.c > index e1f60f9..ed0703f 100644 > --- a/drivers/char/mspec.c > +++ b/drivers/char/mspec.c > @@ -168,7 +168,7 @@ mspec_close(struct vm_area_struct *vma) > if (!atomic_dec_and_test(&vdata->refcnt)) > return; > > - last_index = (vdata->vm_end - vdata->vm_start) >> PAGE_SHIFT; > + last_index = vma_pages(vdata); > for (index = 0; index < last_index; index++) { > if (vdata->maddr[index] == 0) > continue; > This function mspec_mmap also need modification... And you can change int to unsigned long. static int mspec_mmap(struct file *file, struct vm_area_struct *vma, enum mspec_page_type type) { struct vma_data *vdata; int pages, vdata_size, flags = 0; if (vma->vm_pgoff != 0) return -EINVAL; if ((vma->vm_flags & VM_SHARED) == 0) return -EINVAL; if ((vma->vm_flags & VM_WRITE) == 0) return -EPERM; pages = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; vdata_size = sizeof(struct vma_data) + pages * sizeof(long); if (vdata_size <= PAGE_SIZE) vdata = kzalloc(vdata_size, GFP_KERNEL); else { vdata = vzalloc(vdata_size); flags = VMD_VMALLOCED; } if (!vdata) return -ENOMEM; -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, 15 Apr 2013, Libin wrote: > diff --git a/drivers/char/mspec.c b/drivers/char/mspec.c > index e1f60f9..ed0703f 100644 > --- a/drivers/char/mspec.c > +++ b/drivers/char/mspec.c > @@ -168,7 +168,7 @@ mspec_close(struct vm_area_struct *vma) > if (!atomic_dec_and_test(&vdata->refcnt)) > return; > > - last_index = (vdata->vm_end - vdata->vm_start) >> PAGE_SHIFT; > + last_index = vma_pages(vdata); > for (index = 0; index < last_index; index++) { > if (vdata->maddr[index] == 0) > continue; vdata is of type struct vma_data * and vma_pages() takes a formal of type struct vm_area_struct *, so these are incompatible. Hopefully you tested the other changes and simply lack an ia64 cross compiler for this one, because it will emit a warning. -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/char/mspec.c b/drivers/char/mspec.c index e1f60f9..ed0703f 100644 --- a/drivers/char/mspec.c +++ b/drivers/char/mspec.c @@ -168,7 +168,7 @@ mspec_close(struct vm_area_struct *vma) if (!atomic_dec_and_test(&vdata->refcnt)) return; - last_index = (vdata->vm_end - vdata->vm_start) >> PAGE_SHIFT; + last_index = vma_pages(vdata); for (index = 0; index < last_index; index++) { if (vdata->maddr[index] == 0) continue;
(*->vm_end - *->vm_start) >> PAGE_SHIFT operation is implemented as a inline funcion vma_pages() in linux/mm.h, so using it. Signed-off-by: Libin <huawei.libin@huawei.com> --- drivers/char/mspec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)