#include <linux/notifier.h>
 
 static uint32_t lowmem_debug_level = 2;
-static int lowmem_adj[6] = {
+static short lowmem_adj[6] = {
        0,
        1,
        6,
        int rem = 0;
        int tasksize;
        int i;
-       int min_score_adj = OOM_SCORE_ADJ_MAX + 1;
+       short min_score_adj = OOM_SCORE_ADJ_MAX + 1;
        int selected_tasksize = 0;
-       int selected_oom_score_adj;
+       short selected_oom_score_adj;
        int array_size = ARRAY_SIZE(lowmem_adj);
        int other_free = global_page_state(NR_FREE_PAGES);
        int other_file = global_page_state(NR_FILE_PAGES) -
                }
        }
        if (sc->nr_to_scan > 0)
-               lowmem_print(3, "lowmem_shrink %lu, %x, ofree %d %d, ma %d\n",
+               lowmem_print(3, "lowmem_shrink %lu, %x, ofree %d %d, ma %hd\n",
                                sc->nr_to_scan, sc->gfp_mask, other_free,
                                other_file, min_score_adj);
        rem = global_page_state(NR_ACTIVE_ANON) +
        rcu_read_lock();
        for_each_process(tsk) {
                struct task_struct *p;
-               int oom_score_adj;
+               short oom_score_adj;
 
                if (tsk->flags & PF_KTHREAD)
                        continue;
                selected = p;
                selected_tasksize = tasksize;
                selected_oom_score_adj = oom_score_adj;
-               lowmem_print(2, "select %d (%s), adj %d, size %d, to kill\n",
+               lowmem_print(2, "select %d (%s), adj %hd, size %d, to kill\n",
                             p->pid, p->comm, oom_score_adj, tasksize);
        }
        if (selected) {
-               lowmem_print(1, "send sigkill to %d (%s), adj %d, size %d\n",
+               lowmem_print(1, "send sigkill to %d (%s), adj %hd, size %d\n",
                             selected->pid, selected->comm,
                             selected_oom_score_adj, selected_tasksize);
                lowmem_deathpending_timeout = jiffies + HZ;
 }
 
 module_param_named(cost, lowmem_shrinker.seeks, int, S_IRUGO | S_IWUSR);
-module_param_array_named(adj, lowmem_adj, int, &lowmem_adj_size,
+module_param_array_named(adj, lowmem_adj, short, &lowmem_adj_size,
                         S_IRUGO | S_IWUSR);
 module_param_array_named(minfree, lowmem_minfree, uint, &lowmem_minfree_size,
                         S_IRUGO | S_IWUSR);
 
 {
        struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
        char buffer[PROC_NUMBUF];
-       int oom_score_adj = OOM_SCORE_ADJ_MIN;
+       short oom_score_adj = OOM_SCORE_ADJ_MIN;
        unsigned long flags;
        size_t len;
 
                unlock_task_sighand(task, &flags);
        }
        put_task_struct(task);
-       len = snprintf(buffer, sizeof(buffer), "%d\n", oom_score_adj);
+       len = snprintf(buffer, sizeof(buffer), "%hd\n", oom_score_adj);
        return simple_read_from_buffer(buf, count, ppos, buffer, len);
 }
 
                goto err_task_lock;
        }
 
-       if (oom_score_adj < task->signal->oom_score_adj_min &&
+       if ((short)oom_score_adj < task->signal->oom_score_adj_min &&
                        !capable(CAP_SYS_RESOURCE)) {
                err = -EACCES;
                goto err_sighand;
        }
 
-       task->signal->oom_score_adj = oom_score_adj;
+       task->signal->oom_score_adj = (short)oom_score_adj;
        if (has_capability_noaudit(current, CAP_SYS_RESOURCE))
-               task->signal->oom_score_adj_min = oom_score_adj;
+               task->signal->oom_score_adj_min = (short)oom_score_adj;
        trace_oom_score_adj_update(task);
 
 err_sighand:
 
        OOM_SCAN_SELECT,        /* always select this thread first */
 };
 
-extern void compare_swap_oom_score_adj(int old_val, int new_val);
-extern int test_set_oom_score_adj(int new_val);
+extern void compare_swap_oom_score_adj(short old_val, short new_val);
+extern short test_set_oom_score_adj(short new_val);
 
 extern unsigned long oom_badness(struct task_struct *p,
                struct mem_cgroup *memcg, const nodemask_t *nodemask,
 
        struct rw_semaphore group_rwsem;
 #endif
 
-       int oom_score_adj;      /* OOM kill score adjustment */
-       int oom_score_adj_min;  /* OOM kill score adjustment minimum value.
-                                * Only settable by CAP_SYS_RESOURCE. */
+       short oom_score_adj;            /* OOM kill score adjustment */
+       short oom_score_adj_min;        /* OOM kill score adjustment min value.
+                                        * Only settable by CAP_SYS_RESOURCE. */
 
        struct mutex cred_guard_mutex;  /* guard against foreign influences on
                                         * credential calculations
 
        TP_STRUCT__entry(
                __field(        pid_t,  pid)
                __array(        char,   comm,   TASK_COMM_LEN )
-               __field(         int,   oom_score_adj)
+               __field(        short,  oom_score_adj)
        ),
 
        TP_fast_assign(
                __entry->oom_score_adj = task->signal->oom_score_adj;
        ),
 
-       TP_printk("pid=%d comm=%s oom_score_adj=%d",
+       TP_printk("pid=%d comm=%s oom_score_adj=%hd",
                __entry->pid, __entry->comm, __entry->oom_score_adj)
 );
 
 
                __field(        pid_t,  pid)
                __array(        char,   comm, TASK_COMM_LEN)
                __field( unsigned long, clone_flags)
-               __field(        int,    oom_score_adj)
+               __field(        short,  oom_score_adj)
        ),
 
        TP_fast_assign(
                __entry->oom_score_adj = task->signal->oom_score_adj;
        ),
 
-       TP_printk("pid=%d comm=%s clone_flags=%lx oom_score_adj=%d",
+       TP_printk("pid=%d comm=%s clone_flags=%lx oom_score_adj=%hd",
                __entry->pid, __entry->comm,
                __entry->clone_flags, __entry->oom_score_adj)
 );
                __field(        pid_t,  pid)
                __array(        char, oldcomm,  TASK_COMM_LEN)
                __array(        char, newcomm,  TASK_COMM_LEN)
-               __field(        int, oom_score_adj)
+               __field(        short,  oom_score_adj)
        ),
 
        TP_fast_assign(
                __entry->oom_score_adj = task->signal->oom_score_adj;
        ),
 
-       TP_printk("pid=%d oldcomm=%s newcomm=%s oom_score_adj=%d",
+       TP_printk("pid=%d oldcomm=%s newcomm=%s oom_score_adj=%hd",
                __entry->pid, __entry->oldcomm,
                __entry->newcomm, __entry->oom_score_adj)
 );
 
        if (ksm_run != flags) {
                ksm_run = flags;
                if (flags & KSM_RUN_UNMERGE) {
-                       int oom_score_adj;
+                       short oom_score_adj;
 
                        oom_score_adj = test_set_oom_score_adj(OOM_SCORE_ADJ_MAX);
                        err = unmerge_and_remove_all_rmap_items();
 
  * @old_val.  Usually used to reinstate a previous value to prevent racing with
  * userspacing tuning the value in the interim.
  */
-void compare_swap_oom_score_adj(int old_val, int new_val)
+void compare_swap_oom_score_adj(short old_val, short new_val)
 {
        struct sighand_struct *sighand = current->sighand;
 
  * synchronization and returns the old value.  Usually used to temporarily
  * set a value, save the old value in the caller, and then reinstate it later.
  */
-int test_set_oom_score_adj(int new_val)
+short test_set_oom_score_adj(short new_val)
 {
        struct sighand_struct *sighand = current->sighand;
        int old_val;
        if (!p)
                return 0;
 
-       adj = p->signal->oom_score_adj;
+       adj = (long)p->signal->oom_score_adj;
        if (adj == OOM_SCORE_ADJ_MIN) {
                task_unlock(p);
                return 0;
                        continue;
                }
 
-               pr_info("[%5d] %5d %5d %8lu %8lu %7lu %8lu         %5d %s\n",
+               pr_info("[%5d] %5d %5d %8lu %8lu %7lu %8lu         %5hd %s\n",
                        task->pid, from_kuid(&init_user_ns, task_uid(task)),
                        task->tgid, task->mm->total_vm, get_mm_rss(task->mm),
                        task->mm->nr_ptes,
 {
        task_lock(current);
        pr_warning("%s invoked oom-killer: gfp_mask=0x%x, order=%d, "
-               "oom_score_adj=%d\n",
+               "oom_score_adj=%hd\n",
                current->comm, gfp_mask, order,
                current->signal->oom_score_adj);
        cpuset_print_task_mems_allowed(current);
 
        struct address_space *mapping;
        struct inode *inode;
        struct filename *pathname;
-       int oom_score_adj;
+       short oom_score_adj;
        int i, type, prev;
        int err;