# SPDX-License-Identifier: GPL-2.0
-obj-$(CONFIG_ION) +=   ion.o ion-ioctl.o ion_heap.o
+obj-$(CONFIG_ION) += ion.o ion_heap.o
 obj-$(CONFIG_ION_SYSTEM_HEAP) += ion_system_heap.o ion_page_pool.o
 obj-$(CONFIG_ION_CARVEOUT_HEAP) += ion_carveout_heap.o
 obj-$(CONFIG_ION_CHUNK_HEAP) += ion_chunk_heap.o
 
+++ /dev/null
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (C) 2011 Google, Inc.
- */
-
-#include <linux/kernel.h>
-#include <linux/file.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-
-#include "ion.h"
-
-union ion_ioctl_arg {
-       struct ion_allocation_data allocation;
-       struct ion_heap_query query;
-};
-
-static int validate_ioctl_arg(unsigned int cmd, union ion_ioctl_arg *arg)
-{
-       switch (cmd) {
-       case ION_IOC_HEAP_QUERY:
-               if (arg->query.reserved0 ||
-                   arg->query.reserved1 ||
-                   arg->query.reserved2)
-                       return -EINVAL;
-               break;
-       default:
-               break;
-       }
-
-       return 0;
-}
-
-long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
-{
-       int ret = 0;
-       union ion_ioctl_arg data;
-
-       if (_IOC_SIZE(cmd) > sizeof(data))
-               return -EINVAL;
-
-       /*
-        * The copy_from_user is unconditional here for both read and write
-        * to do the validate. If there is no write for the ioctl, the
-        * buffer is cleared
-        */
-       if (copy_from_user(&data, (void __user *)arg, _IOC_SIZE(cmd)))
-               return -EFAULT;
-
-       ret = validate_ioctl_arg(cmd, &data);
-       if (ret) {
-               pr_warn_once("%s: ioctl validate failed\n", __func__);
-               return ret;
-       }
-
-       if (!(_IOC_DIR(cmd) & _IOC_WRITE))
-               memset(&data, 0, sizeof(data));
-
-       switch (cmd) {
-       case ION_IOC_ALLOC:
-       {
-               int fd;
-
-               fd = ion_alloc(data.allocation.len,
-                              data.allocation.heap_id_mask,
-                              data.allocation.flags);
-               if (fd < 0)
-                       return fd;
-
-               data.allocation.fd = fd;
-
-               break;
-       }
-       case ION_IOC_HEAP_QUERY:
-               ret = ion_query_heaps(&data.query);
-               break;
-       default:
-               return -ENOTTY;
-       }
-
-       if (_IOC_DIR(cmd) & _IOC_READ) {
-               if (copy_to_user((void __user *)arg, &data, _IOC_SIZE(cmd)))
-                       return -EFAULT;
-       }
-       return ret;
-}
 
        .unmap = ion_dma_buf_kunmap,
 };
 
-int ion_alloc(size_t len, unsigned int heap_id_mask, unsigned int flags)
+static int ion_alloc(size_t len, unsigned int heap_id_mask, unsigned int flags)
 {
        struct ion_device *dev = internal_dev;
        struct ion_buffer *buffer = NULL;
        return fd;
 }
 
-int ion_query_heaps(struct ion_heap_query *query)
+static int ion_query_heaps(struct ion_heap_query *query)
 {
        struct ion_device *dev = internal_dev;
        struct ion_heap_data __user *buffer = u64_to_user_ptr(query->heaps);
        return ret;
 }
 
+union ion_ioctl_arg {
+       struct ion_allocation_data allocation;
+       struct ion_heap_query query;
+};
+
+static int validate_ioctl_arg(unsigned int cmd, union ion_ioctl_arg *arg)
+{
+       switch (cmd) {
+       case ION_IOC_HEAP_QUERY:
+               if (arg->query.reserved0 ||
+                   arg->query.reserved1 ||
+                   arg->query.reserved2)
+                       return -EINVAL;
+               break;
+       default:
+               break;
+       }
+
+       return 0;
+}
+
+static long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+{
+       int ret = 0;
+       union ion_ioctl_arg data;
+
+       if (_IOC_SIZE(cmd) > sizeof(data))
+               return -EINVAL;
+
+       /*
+        * The copy_from_user is unconditional here for both read and write
+        * to do the validate. If there is no write for the ioctl, the
+        * buffer is cleared
+        */
+       if (copy_from_user(&data, (void __user *)arg, _IOC_SIZE(cmd)))
+               return -EFAULT;
+
+       ret = validate_ioctl_arg(cmd, &data);
+       if (ret) {
+               pr_warn_once("%s: ioctl validate failed\n", __func__);
+               return ret;
+       }
+
+       if (!(_IOC_DIR(cmd) & _IOC_WRITE))
+               memset(&data, 0, sizeof(data));
+
+       switch (cmd) {
+       case ION_IOC_ALLOC:
+       {
+               int fd;
+
+               fd = ion_alloc(data.allocation.len,
+                              data.allocation.heap_id_mask,
+                              data.allocation.flags);
+               if (fd < 0)
+                       return fd;
+
+               data.allocation.fd = fd;
+
+               break;
+       }
+       case ION_IOC_HEAP_QUERY:
+               ret = ion_query_heaps(&data.query);
+               break;
+       default:
+               return -ENOTTY;
+       }
+
+       if (_IOC_DIR(cmd) & _IOC_READ) {
+               if (copy_to_user((void __user *)arg, &data, _IOC_SIZE(cmd)))
+                       return -EFAULT;
+       }
+       return ret;
+}
+
 static const struct file_operations ion_fops = {
        .owner          = THIS_MODULE,
        .unlocked_ioctl = ion_ioctl,
 
 int ion_heap_buffer_zero(struct ion_buffer *buffer);
 int ion_heap_pages_zero(struct page *page, size_t size, pgprot_t pgprot);
 
-int ion_alloc(size_t len,
-             unsigned int heap_id_mask,
-             unsigned int flags);
-
 /**
  * ion_heap_init_shrinker
  * @heap:              the heap
 int ion_page_pool_shrink(struct ion_page_pool *pool, gfp_t gfp_mask,
                         int nr_to_scan);
 
-long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
-
-int ion_query_heaps(struct ion_heap_query *query);
-
 #endif /* _ION_H */