commit
6431742aa6
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2008-2019, The Linux Foundation. All rights reserved.
|
/* Copyright (c) 2008-2020, The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 and
|
* it under the terms of the GNU General Public License version 2 and
|
||||||
|
@ -2433,7 +2433,7 @@ long kgsl_ioctl_gpuobj_import(struct kgsl_device_private *dev_priv,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
unmap:
|
unmap:
|
||||||
if (param->type == KGSL_USER_MEM_TYPE_DMABUF) {
|
if (kgsl_memdesc_usermem_type(&entry->memdesc) == KGSL_MEM_ENTRY_ION) {
|
||||||
kgsl_destroy_ion(entry->priv_data);
|
kgsl_destroy_ion(entry->priv_data);
|
||||||
entry->memdesc.sgt = NULL;
|
entry->memdesc.sgt = NULL;
|
||||||
}
|
}
|
||||||
|
@ -2708,7 +2708,7 @@ long kgsl_ioctl_map_user_mem(struct kgsl_device_private *dev_priv,
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
error_attach:
|
error_attach:
|
||||||
switch (memtype) {
|
switch (kgsl_memdesc_usermem_type(&entry->memdesc)) {
|
||||||
case KGSL_MEM_ENTRY_ION:
|
case KGSL_MEM_ENTRY_ION:
|
||||||
kgsl_destroy_ion(entry->priv_data);
|
kgsl_destroy_ion(entry->priv_data);
|
||||||
entry->memdesc.sgt = NULL;
|
entry->memdesc.sgt = NULL;
|
||||||
|
@ -3357,6 +3357,8 @@ kgsl_mmap_memstore(struct kgsl_device *device, struct vm_area_struct *vma)
|
||||||
if (vma->vm_flags & VM_WRITE)
|
if (vma->vm_flags & VM_WRITE)
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
|
vma->vm_flags &= ~VM_MAYWRITE;
|
||||||
|
|
||||||
if (memdesc->size != vma_size) {
|
if (memdesc->size != vma_size) {
|
||||||
KGSL_MEM_ERR(device, "memstore bad size: %d should be %llu\n",
|
KGSL_MEM_ERR(device, "memstore bad size: %d should be %llu\n",
|
||||||
vma_size, memdesc->size);
|
vma_size, memdesc->size);
|
||||||
|
|
|
@ -68,14 +68,19 @@ static int sockev_client_cb(struct notifier_block *nb,
|
||||||
struct nlmsghdr *nlh;
|
struct nlmsghdr *nlh;
|
||||||
struct sknlsockevmsg *smsg;
|
struct sknlsockevmsg *smsg;
|
||||||
struct socket *sock;
|
struct socket *sock;
|
||||||
|
struct sock *sk;
|
||||||
|
|
||||||
sock = (struct socket *)data;
|
sock = (struct socket *)data;
|
||||||
if (socknlmsgsk == 0)
|
if (!socknlmsgsk || !sock)
|
||||||
goto done;
|
goto sk_null;
|
||||||
if ((socknlmsgsk == NULL) || (sock == NULL) || (sock->sk == NULL))
|
|
||||||
goto done;
|
|
||||||
|
|
||||||
if (sock->sk->sk_family != AF_INET && sock->sk->sk_family != AF_INET6)
|
sk = sock->sk;
|
||||||
|
if (!sk)
|
||||||
|
goto sk_null;
|
||||||
|
|
||||||
|
sock_hold(sk);
|
||||||
|
|
||||||
|
if (sk->sk_family != AF_INET && sk->sk_family != AF_INET6)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
if (event != SOCKEV_BIND && event != SOCKEV_LISTEN)
|
if (event != SOCKEV_BIND && event != SOCKEV_LISTEN)
|
||||||
|
@ -96,14 +101,15 @@ static int sockev_client_cb(struct notifier_block *nb,
|
||||||
smsg = nlmsg_data(nlh);
|
smsg = nlmsg_data(nlh);
|
||||||
smsg->pid = current->pid;
|
smsg->pid = current->pid;
|
||||||
_sockev_event(event, smsg->event, sizeof(smsg->event));
|
_sockev_event(event, smsg->event, sizeof(smsg->event));
|
||||||
smsg->skfamily = sock->sk->sk_family;
|
smsg->skfamily = sk->sk_family;
|
||||||
smsg->skstate = sock->sk->sk_state;
|
smsg->skstate = sk->sk_state;
|
||||||
smsg->skprotocol = sock->sk->sk_protocol;
|
smsg->skprotocol = sk->sk_protocol;
|
||||||
smsg->sktype = sock->sk->sk_type;
|
smsg->sktype = sk->sk_type;
|
||||||
smsg->skflags = sock->sk->sk_flags;
|
smsg->skflags = sk->sk_flags;
|
||||||
|
|
||||||
nlmsg_notify(socknlmsgsk, skb, 0, SKNLGRP_SOCKEV, 0, GFP_KERNEL);
|
nlmsg_notify(socknlmsgsk, skb, 0, SKNLGRP_SOCKEV, 0, GFP_KERNEL);
|
||||||
done:
|
done:
|
||||||
|
sock_put(sk);
|
||||||
|
sk_null:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue