mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-01 02:21:16 +00:00
pxa3xx-gcu: quite playing silly buggers with ->f_op
misc device gets ->private_data pointing to struct miscdevice on open(), so we can use that to get to per-device structure instead of relying on file_operations being copied into it. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
7294b0bb69
commit
996142e61d
1 changed files with 12 additions and 9 deletions
|
@ -369,15 +369,20 @@ pxa3xx_gcu_wait_free(struct pxa3xx_gcu_priv *priv)
|
|||
|
||||
/* Misc device layer */
|
||||
|
||||
static inline struct pxa3xx_gcu_priv *file_dev(struct file *file)
|
||||
{
|
||||
struct miscdevice *dev = file->private_data;
|
||||
return container_of(dev, struct pxa3xx_gcu_priv, misc_dev);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
pxa3xx_gcu_misc_write(struct file *filp, const char *buff,
|
||||
pxa3xx_gcu_misc_write(struct file *file, const char *buff,
|
||||
size_t count, loff_t *offp)
|
||||
{
|
||||
int ret;
|
||||
unsigned long flags;
|
||||
struct pxa3xx_gcu_batch *buffer;
|
||||
struct pxa3xx_gcu_priv *priv =
|
||||
container_of(filp->f_op, struct pxa3xx_gcu_priv, misc_fops);
|
||||
struct pxa3xx_gcu_priv *priv = file_dev(file);
|
||||
|
||||
int words = count / 4;
|
||||
|
||||
|
@ -450,11 +455,10 @@ pxa3xx_gcu_misc_write(struct file *filp, const char *buff,
|
|||
|
||||
|
||||
static long
|
||||
pxa3xx_gcu_misc_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
||||
pxa3xx_gcu_misc_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
unsigned long flags;
|
||||
struct pxa3xx_gcu_priv *priv =
|
||||
container_of(filp->f_op, struct pxa3xx_gcu_priv, misc_fops);
|
||||
struct pxa3xx_gcu_priv *priv = file_dev(file);
|
||||
|
||||
switch (cmd) {
|
||||
case PXA3XX_GCU_IOCTL_RESET:
|
||||
|
@ -471,11 +475,10 @@ pxa3xx_gcu_misc_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
}
|
||||
|
||||
static int
|
||||
pxa3xx_gcu_misc_mmap(struct file *filp, struct vm_area_struct *vma)
|
||||
pxa3xx_gcu_misc_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
{
|
||||
unsigned int size = vma->vm_end - vma->vm_start;
|
||||
struct pxa3xx_gcu_priv *priv =
|
||||
container_of(filp->f_op, struct pxa3xx_gcu_priv, misc_fops);
|
||||
struct pxa3xx_gcu_priv *priv = file_dev(file);
|
||||
|
||||
switch (vma->vm_pgoff) {
|
||||
case 0:
|
||||
|
|
Loading…
Reference in a new issue