diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2018-06-22 21:20:35 +0200 | 
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2018-06-22 21:20:35 +0200 | 
| commit | 7731b8bc94e599c9a79e428f3359ff2c34b7576a (patch) | |
| tree | 879f18ccbe274122f2d4f095b43cbc7f953e0ada /drivers/android/binder.c | |
| parent | 48e315618dc4dc8904182cd221e3d395d5d97005 (diff) | |
| parent | 9ffc59d57228d74809700be6f7ecb1db10292f05 (diff) | |
Merge branch 'linus' into x86/urgent
Required to queue a dependent fix.
Diffstat (limited to 'drivers/android/binder.c')
| -rw-r--r-- | drivers/android/binder.c | 17 | 
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/android/binder.c b/drivers/android/binder.c index e578eee31589..95283f3bb51c 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -72,10 +72,6 @@  #include <linux/security.h>  #include <linux/spinlock.h> -#ifdef CONFIG_ANDROID_BINDER_IPC_32BIT -#define BINDER_IPC_32BIT 1 -#endif -  #include <uapi/linux/android/binder.h>  #include "binder_alloc.h"  #include "binder_trace.h" @@ -2058,8 +2054,8 @@ static size_t binder_validate_object(struct binder_buffer *buffer, u64 offset)  	struct binder_object_header *hdr;  	size_t object_size = 0; -	if (offset > buffer->data_size - sizeof(*hdr) || -	    buffer->data_size < sizeof(*hdr) || +	if (buffer->data_size < sizeof(*hdr) || +	    offset > buffer->data_size - sizeof(*hdr) ||  	    !IS_ALIGNED(offset, sizeof(u32)))  		return 0; @@ -3925,10 +3921,11 @@ retry:  			binder_inner_proc_unlock(proc);  			if (put_user(e->cmd, (uint32_t __user *)ptr))  				return -EFAULT; +			cmd = e->cmd;  			e->cmd = BR_OK;  			ptr += sizeof(uint32_t); -			binder_stat_br(proc, thread, e->cmd); +			binder_stat_br(proc, thread, cmd);  		} break;  		case BINDER_WORK_TRANSACTION_COMPLETE: {  			binder_inner_proc_unlock(proc); @@ -4696,7 +4693,7 @@ static void binder_vma_close(struct vm_area_struct *vma)  	binder_defer_work(proc, BINDER_DEFERRED_PUT_FILES);  } -static int binder_vm_fault(struct vm_fault *vmf) +static vm_fault_t binder_vm_fault(struct vm_fault *vmf)  {  	return VM_FAULT_SIGBUS;  } @@ -4730,7 +4727,9 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)  		failure_string = "bad vm_flags";  		goto err_bad_arg;  	} -	vma->vm_flags = (vma->vm_flags | VM_DONTCOPY) & ~VM_MAYWRITE; +	vma->vm_flags |= VM_DONTCOPY | VM_MIXEDMAP; +	vma->vm_flags &= ~VM_MAYWRITE; +  	vma->vm_ops = &binder_vm_ops;  	vma->vm_private_data = proc;  | 
