The bug in in file drivers/android/binder.c, function binder_update_page_range(). struct tmp_area in "unmap_vm_area(&tmp_area)" is not initialized if allocate is 0. My new code is like this:
Using c Syntax Highlighting
- int vm_ins_err_f=0;
- ...
- if(ret) {
- ...
- }
- //user_page_addr = proc->vma->vm_start + page_addr - proc->buffer;
- if(proc->vma == NULL) {
- printk(KERN_ERR "binder: %d: binder_alloc_buf failed to map page at %lx in userspace, no vma\n", proc->pid);
- vm_ins_err_f = 1;
- goto err_vm_insert_page_failed;
- }
- user_page_addr = proc->vma->vm_start + page_addr - proc->buffer;
- ret = vm_insert_page(proc->vma, user_page_addr, page[0]);
- if(ret) {
- printk(KERN_ERR "binder: %d: binder_alloc_buf failed to map page at %lx in userspace\n",proc->pid, user_page_addr);
- vm_ins_err_f = 1;
- goto err_vm_insert_page_failed;
- }
- ...
- err_vm_insert_page_failed:
- if(vm_ins_err_f==1) {
- vm_ins_err_f=2;
- unmap_vm_area(&tmp_area);
- }
- }
- err_map_kernel_failed:
- ...
Parsed in 0.005 seconds, using GeSHi 1.0.8.4
After the bug is removed, the problem persists: I still got a blank screen(no red-eye at all).
Anyone succeeded in porting m5 user space to N810?

