msm: kgsl: fix sparse type conversion errors

Fix many places where we needlessly use the wrong type
or pointer decoration.

Change-Id: Ic60e91389c5a577970ffe37d4511baf3a45fea35
Signed-off-by: Jeremy Gebben <jgebben@codeaurora.org>
Signed-off-by: Prakash Kamliya <pkamliya@codeaurora.org>
This commit is contained in:
Jeremy Gebben 2015-07-10 16:43:22 -06:00 committed by Gerrit - the friendly Code Review server
parent c3abdef6e0
commit 5ec4d837ed
11 changed files with 33 additions and 36 deletions

View File

@ -2518,14 +2518,14 @@ static int adreno_suspend_context(struct kgsl_device *device)
* @value - Value read from the device memory
* @mem_len - Length of the device memory mapped to the kernel
*/
static void adreno_read(struct kgsl_device *device, void *base,
static void adreno_read(struct kgsl_device *device, void __iomem *base,
unsigned int offsetwords, unsigned int *value,
unsigned int mem_len)
{
unsigned int *reg;
unsigned int __iomem *reg;
BUG_ON(offsetwords*sizeof(uint32_t) >= mem_len);
reg = (unsigned int *)(base + (offsetwords << 2));
reg = (unsigned int __iomem *)(base + (offsetwords << 2));
if (!in_interrupt())
kgsl_pre_hwaccess(device);
@ -2565,7 +2565,7 @@ static void adreno_regwrite(struct kgsl_device *device,
unsigned int offsetwords,
unsigned int value)
{
unsigned int *reg;
unsigned int __iomem *reg;
BUG_ON(offsetwords*sizeof(uint32_t) >= device->reg_len);
@ -2575,7 +2575,7 @@ static void adreno_regwrite(struct kgsl_device *device,
trace_kgsl_regwrite(device, offsetwords, value);
kgsl_cffdump_regwrite(device, offsetwords << 2, value);
reg = (unsigned int *)(device->reg_virt + (offsetwords << 2));
reg = (unsigned int __iomem *)(device->reg_virt + (offsetwords << 2));
/*ensure previous writes post before this one,
* i.e. act like normal writel() */

View File

@ -1344,7 +1344,7 @@ static void a4xx_perfcounter_init(struct adreno_device *adreno_dev)
* are swizzled so only a subset of them are usable
*/
if (counters != 0) {
if (counters != NULL) {
counters->groups[KGSL_PERFCOUNTER_GROUP_CP].regs =
a420_perfcounters_cp;
counters->groups[KGSL_PERFCOUNTER_GROUP_CP].reg_count =

View File

@ -160,8 +160,7 @@ static long adreno_ioctl_perfcounter_query_compat(
long result;
query.groupid = query32->groupid;
query.countables =
(unsigned int __user *)(uintptr_t) query32->countables;
query.countables = to_user_ptr(query32->countables);
query.count = query32->count;
query.max_counters = query32->max_counters;

View File

@ -792,7 +792,7 @@ error_free:
return size;
}
static int _pipe_print_pending(char *ubuf, size_t max)
static int _pipe_print_pending(char __user *ubuf, size_t max)
{
loff_t unused = 0;
char str[] = "Operation Would Block!";
@ -802,11 +802,11 @@ static int _pipe_print_pending(char *ubuf, size_t max)
}
static int _pipe_print_results(struct adreno_device *adreno_dev,
char *ubuf, size_t max)
char __user *ubuf, size_t max)
{
struct adreno_profile *profile = &adreno_dev->profile;
const char *grp_name;
char *usr_buf = ubuf;
char __user *usr_buf = ubuf;
unsigned int *log_ptr = NULL, *tmp_log_ptr = NULL;
int len, i;
int status = 0;
@ -946,7 +946,7 @@ static ssize_t profile_pipe_print(struct file *filep, char __user *ubuf,
struct kgsl_device *device = (struct kgsl_device *) filep->private_data;
struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
struct adreno_profile *profile = &adreno_dev->profile;
char *usr_buf = ubuf;
char __user *usr_buf = ubuf;
int status = 0;
/*

View File

@ -1712,19 +1712,19 @@ long kgsl_ioctl_gpu_command(struct kgsl_device_private *dev_priv,
}
result = kgsl_cmdbatch_add_cmdlist(device, cmdbatch,
(void __user *) (uintptr_t) param->cmdlist,
to_user_ptr(param->cmdlist),
param->cmdsize, param->numcmds);
if (result)
goto done;
result = kgsl_cmdbatch_add_memlist(device, cmdbatch,
(void __user *) (uintptr_t) param->objlist,
to_user_ptr(param->objlist),
param->objsize, param->numobjs);
if (result)
goto done;
result = kgsl_cmdbatch_add_synclist(device, cmdbatch,
(void __user *) (uintptr_t) param->synclist,
to_user_ptr(param->synclist),
param->syncsize, param->numsyncs);
if (result)
goto done;
@ -1912,7 +1912,7 @@ static long gpuobj_free_on_timestamp(struct kgsl_device_private *dev_priv,
memset(&event, 0, sizeof(event));
ret = _copy_from_user(&event, (void __user *) (uintptr_t) param->priv,
ret = _copy_from_user(&event, to_user_ptr(param->priv),
sizeof(event), param->len);
if (ret)
return ret;
@ -1946,7 +1946,7 @@ static long gpuobj_free_on_fence(struct kgsl_device_private *dev_priv,
memset(&event, 0, sizeof(event));
ret = _copy_from_user(&event, (void __user *) (uintptr_t) param->priv,
ret = _copy_from_user(&event, to_user_ptr(param->priv),
sizeof(event), param->len);
if (ret)
return ret;
@ -2254,7 +2254,7 @@ static long _gpuobj_map_useraddr(struct kgsl_device *device,
return -ENOTSUPP;
ret = _copy_from_user(&useraddr,
(void __user *) (uintptr_t) param->priv, sizeof(useraddr),
to_user_ptr(param->priv), sizeof(useraddr),
param->priv_len);
if (ret)
return ret;
@ -2292,7 +2292,7 @@ static long _gpuobj_map_dma_buf(struct kgsl_device *device,
entry->memdesc.priv |= KGSL_MEMDESC_SECURE;
}
ret = _copy_from_user(&buf, (void __user *) (uintptr_t) param->priv,
ret = _copy_from_user(&buf, to_user_ptr(param->priv),
sizeof(buf), param->priv_len);
if (ret)
return ret;
@ -2901,7 +2901,7 @@ long kgsl_ioctl_gpuobj_sync(struct kgsl_device_private *dev_priv,
goto out;
}
ptr = (void __user *) (uintptr_t) param->objs;
ptr = to_user_ptr(param->objs);
for (i = 0; i < param->count; i++) {
ret = _copy_from_user(&objs[i], ptr, sizeof(*objs),
@ -3893,20 +3893,13 @@ static irqreturn_t kgsl_irq_handler(int irq, void *data)
}
#define KGSL_READ_MESSAGE "OH HAI GPU"
#define KGSL_READ_MESSAGE "OH HAI GPU\n"
static ssize_t kgsl_read(struct file *filep, char __user *buf, size_t count,
loff_t *pos)
{
int ret;
if (*pos >= strlen(KGSL_READ_MESSAGE) + 1)
return 0;
ret = snprintf(buf, count, "%s\n", KGSL_READ_MESSAGE);
*pos += ret;
return ret;
return simple_read_from_buffer(buf, count, pos,
KGSL_READ_MESSAGE, strlen(KGSL_READ_MESSAGE) + 1);
}
static const struct file_operations kgsl_fops = {

View File

@ -472,4 +472,9 @@ static inline int _copy_from_user(void *dest, void __user *src,
return copy_from_user(dest, src, copy) ? -EFAULT : 0;
}
static inline void __user *to_user_ptr(uint64_t address)
{
return (void __user *)(uintptr_t)address;
}
#endif /* __KGSL_H */

View File

@ -1022,7 +1022,7 @@ int kgsl_cmdbatch_add_synclist(struct kgsl_device *device,
return ret;
sync.type = syncpoint.type;
sync.priv = (void __user *) (uintptr_t) syncpoint.priv;
sync.priv = to_user_ptr(syncpoint.priv);
sync.size = syncpoint.size;
ret = kgsl_cmdbatch_add_sync(device, cmdbatch, &sync);

View File

@ -168,7 +168,7 @@ kgsl_ioctl_gpumem_sync_cache_bulk_compat(struct kgsl_device_private *dev_priv,
struct kgsl_gpumem_sync_cache_bulk_compat *param32 = data;
struct kgsl_gpumem_sync_cache_bulk param;
param.id_list = (unsigned int __user *)(uintptr_t)param32->id_list;
param.id_list = to_user_ptr(param32->id_list);
param.count = param32->count;
param.op = param32->op;

View File

@ -248,7 +248,7 @@ void kgsl_process_init_debugfs(struct kgsl_process_private *private)
void kgsl_core_debugfs_init(void)
{
kgsl_debugfs_dir = debugfs_create_dir("kgsl", 0);
kgsl_debugfs_dir = debugfs_create_dir("kgsl", NULL);
proc_d_debugfs = debugfs_create_dir("proc", kgsl_debugfs_dir);
}

View File

@ -223,13 +223,13 @@ struct kgsl_device {
unsigned long reg_phys;
/* Starting Kernel virtual address for GPU registers */
void *reg_virt;
void __iomem *reg_virt;
/* Total memory size for all GPU registers */
unsigned int reg_len;
/* Kernel virtual address for GPU shader memory */
void *shader_mem_virt;
void __iomem *shader_mem_virt;
/* Starting physical address for GPU shader memory */
unsigned long shader_mem_phys;

View File

@ -705,7 +705,7 @@ _kgsl_sharedmem_page_alloc(struct kgsl_memdesc *memdesc,
while (len > 0) {
struct page *page;
unsigned int gfp_mask = __GFP_HIGHMEM;
gfp_t gfp_mask = __GFP_HIGHMEM;
int j;
/* don't waste space at the end of the allocation*/