summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-03-02 23:05:09 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-03-02 23:05:09 -0800
commita337c17cebeadebddd57cfae9d7953567969be06 (patch)
treedbb9ae2526b9fc75e6092c5a33906d7edf9d6ad6 /drivers
parent6e7aa987022e6914863e5307ada6a858da7e625a (diff)
parentd567b416ed6de3402a47f4b474fa3970f12e1a2b (diff)
Merge "msm: kgsl: Correct memory type update in IOCTL_KGSL_GPUOBJ_SET_INFO"
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/msm/kgsl.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c
index cc3e79dc29bf..97a2d8fa5d5a 100644
--- a/drivers/gpu/msm/kgsl.c
+++ b/drivers/gpu/msm/kgsl.c
@@ -3977,6 +3977,7 @@ long kgsl_ioctl_gpuobj_set_info(struct kgsl_device_private *dev_priv,
struct kgsl_process_private *private = dev_priv->process_priv;
struct kgsl_gpuobj_set_info *param = data;
struct kgsl_mem_entry *entry;
+ int ret = 0;
if (param->id == 0)
return -EINVAL;
@@ -3989,12 +3990,16 @@ long kgsl_ioctl_gpuobj_set_info(struct kgsl_device_private *dev_priv,
copy_metadata(entry, param->metadata, param->metadata_len);
if (param->flags & KGSL_GPUOBJ_SET_INFO_TYPE) {
- entry->memdesc.flags &= ~((uint64_t) KGSL_MEMTYPE_MASK);
- entry->memdesc.flags |= param->type << KGSL_MEMTYPE_SHIFT;
+ if (param->type <= (KGSL_MEMTYPE_MASK >> KGSL_MEMTYPE_SHIFT)) {
+ entry->memdesc.flags &= ~((uint64_t) KGSL_MEMTYPE_MASK);
+ entry->memdesc.flags |= (uint64_t)((param->type <<
+ KGSL_MEMTYPE_SHIFT) & KGSL_MEMTYPE_MASK);
+ } else
+ ret = -EINVAL;
}
kgsl_mem_entry_put(entry);
- return 0;
+ return ret;
}
long kgsl_ioctl_cff_syncmem(struct kgsl_device_private *dev_priv,