Author SHA1 Message Date
Greg Hackmann 33fde7c79b alarmtimer: don't rate limit one-shot timers
Commit ff86bf0c65f1 ("alarmtimer: Rate limit periodic intervals") sets a
minimum bound on the alarm timer interval.  This minimum bound shouldn't
be applied if the interval is 0.  Otherwise, one-shot timers will be
converted into periodic ones.

Fixes: ff86bf0c65f1 ("alarmtimer: Rate limit periodic intervals")
Change-Id: I3dd6cb7b5caec3d39b956489448c19d3cda41e5c
Reported-by: Ben Fennema <fennema@google.com>
Signed-off-by: Greg Hackmann <ghackmann@google.com>
Cc: stable@vger.kernel.org
Cc: John Stultz <john.stultz@linaro.org>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-21 23:24:05 +02:00
Thomas Gleixner bc63c04b77 alarmtimer: Rate limit periodic intervals
commit ff86bf0c65f14346bf2440534f9ba5ac232c39a0 upstream.

The alarmtimer code has another source of potentially rearming itself too
fast. Interval timers with a very samll interval have a similar CPU hog
effect as the previously fixed overflow issue.

The reason is that alarmtimers do not implement the normal protection
against this kind of problem which the other posix timer use:

  timer expires -> queue signal -> deliver signal -> rearm timer

This scheme brings the rearming under scheduler control and prevents
permanently firing timers which hog the CPU.

Bringing this scheme to the alarm timer code is a major overhaul because it
lacks all the necessary mechanisms completely.

So for a quick fix limit the interval to one jiffie. This is not
problematic in practice as alarmtimers are usually backed by an RTC for
suspend which have 1 second resolution. It could be therefor argued that
the resolution of this clock should be set to 1 second in general, but
that's outside the scope of this fix.

Change-Id: Iad8d71a3136cf397b75a541720ebbfbc4152dd31
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Kostya Serebryany <kcc@google.com>
Cc: syzkaller <syzkaller@googlegroups.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Dmitry Vyukov <dvyukov@google.com>
Link: http://lkml.kernel.org/r/20170530211655.896767100@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-21 23:23:59 +02:00
Guenter Roeck 217278a25e UPSTREAM: timer: Export destroy_hrtimer_on_stack()
hrtimer_init_on_stack() needs a matching call to
destroy_hrtimer_on_stack(), so both need to be exported.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit c08376ac97cb202ec65320f3d90d5c4c5e2adb0b)
[astrachan: Fixes i386-allmodconfig build failure in vsoc.ko noticed
 by 01.org kbuild-all project building kernel/msm]
Bug: 70214720
Change-Id: If4d5c466255019322ea21ef38ee5b1b382cce969
Signed-off-by: Alistair Strachan <astrachan@google.com>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-21 23:23:52 +02:00
Anna-Maria Gleixner aa47393ac9 hrtimer: Ensure POSIX compliance (relative CLOCK_REALTIME hrtimers)
commit 48d0c9becc7f3c66874c100c126459a9da0fdced upstream.

The POSIX specification defines that relative CLOCK_REALTIME timers are not
affected by clock modifications. Those timers have to use CLOCK_MONOTONIC
to ensure POSIX compliance.

The introduction of the additional HRTIMER_MODE_PINNED mode broke this
requirement for pinned timers.

There is no user space visible impact because user space timers are not
using pinned mode, but for consistency reasons this needs to be fixed.

Check whether the mode has the HRTIMER_MODE_REL bit set instead of
comparing with HRTIMER_MODE_ABS.

Change-Id: Ib186c3983c6f66fb4000d85fd5ec09b702a033ab
Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
Cc: Christoph Hellwig <hch@lst.de>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: keescook@chromium.org
Fixes: 597d027573 ("timers: Framework for identifying pinned timers")
Link: http://lkml.kernel.org/r/20171221104205.7269-7-anna-maria@linutronix.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Mike Galbraith <efault@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-21 23:23:44 +02:00
Thomas Gleixner fa6bf8aae4 hrtimer: Reset hrtimer cpu base proper on CPU hotplug
commit d5421ea43d30701e03cadc56a38854c36a8b4433 upstream.

The hrtimer interrupt code contains a hang detection and mitigation
mechanism, which prevents that a long delayed hrtimer interrupt causes a
continous retriggering of interrupts which prevent the system from making
progress. If a hang is detected then the timer hardware is programmed with
a certain delay into the future and a flag is set in the hrtimer cpu base
which prevents newly enqueued timers from reprogramming the timer hardware
prior to the chosen delay. The subsequent hrtimer interrupt after the delay
clears the flag and resumes normal operation.

If such a hang happens in the last hrtimer interrupt before a CPU is
unplugged then the hang_detected flag is set and stays that way when the
CPU is plugged in again. At that point the timer hardware is not armed and
it cannot be armed because the hang_detected flag is still active, so
nothing clears that flag. As a consequence the CPU does not receive hrtimer
interrupts and no timers expire on that CPU which results in RCU stalls and
other malfunctions.

Clear the flag along with some other less critical members of the hrtimer
cpu base to ensure starting from a clean state when a CPU is plugged in.

Thanks to Paul, Sebastian and Anna-Maria for their help to get down to the
root cause of that hard to reproduce heisenbug. Once understood it's
trivial and certainly justifies a brown paperbag.

Fixes: 41d2e49493 ("hrtimer: Tune hrtimer_interrupt hang logic")
Change-Id: I707de358bcc70a980dc4bd581c159a30e01cce41
Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sebastian Sewior <bigeasy@linutronix.de>
Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1801261447590.2067@nanos
[bigeasy: backport to v3.18, drop ->next_timer it was introduced later]
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-21 23:23:36 +02:00
John Stultz c1d4a55b71 ktime: Fix ktime_divns to do signed division
[ Upstream commit f7bcb70ebae0dcdb5a2d859b09e4465784d99029 ]

It was noted that the 32bit implementation of ktime_divns()
was doing unsigned division and didn't properly handle
negative values.

And when a ktime helper was changed to utilize
ktime_divns, it caused a regression on some IR blasters.
See the following bugzilla for details:
  https://bugzilla.redhat.com/show_bug.cgi?id=1200353

This patch fixes the problem in ktime_divns by checking
and preserving the sign bit, and then reapplying it if
appropriate after the division, it also changes the return
type to a s64 to make it more obvious this is expected.

Nicolas also pointed out that negative dividers would
cause infinite loops on 32bit systems, negative dividers
is unlikely for users of this function, but out of caution
this patch adds checks for negative dividers for both
32-bit (BUG_ON) and 64-bit(WARN_ON) versions to make sure
no such use cases creep in.

[ tglx: Hand an u64 to do_div() to avoid the compiler warning ]

Fixes: 166afb64511e 'ktime: Sanitize ktime_to_us/ms conversion'
Change-Id: I8af36d5e6bd3a3f049f564dd3b65cc1b3e929561
Reported-and-tested-by: Trevor Cordes <trevor@tecnopolis.ca>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Josh Boyer <jwboyer@redhat.com>
Cc: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
Cc: <stable@vger.kernel.org>
Link: http://lkml.kernel.org/r/1431118043-23452-1-git-send-email-john.stultz@linaro.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-21 23:23:28 +02:00
Nicolas Pitre 5ae02bef27 ktime: Optimize ktime_divns for constant divisors
[ Upstream commit 8b618628b2bf83512fc8df5e8672619d65adfdfb ]

At least on ARM, do_div() is optimized to turn constant divisors into
an inline multiplication by the reciprocal value at compile time.
However this optimization is missed entirely whenever ktime_divns() is
used and the slow out-of-line division code is used all the time.

Let ktime_divns() use do_div() inline whenever the divisor is constant
and small enough.  This will make things like ktime_to_us() and
ktime_to_ms() much faster.

Change-Id: I6a672b10d6d6b373b327f9548135ededfd1e1835
Cc: Arnd Bergmann <arnd.bergmann@linaro.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Nicolas Pitre <nico@linaro.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-21 23:23:20 +02:00
Thomas Gleixner 5a75e7cfa0 ktime: Sanitize ktime_to_us/ms conversion
With the plain nanoseconds based ktime_t we can simply use
ktime_divns() instead of going through loops and hoops of
timespec/timeval conversion.

Change-Id: Ib33ea80bc3fdd26fcada1072b1f8ffc26081c0ba
Reported-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-21 23:23:10 +02:00
Andrea 05be1e7e5a matisse-millet: defconfig: remove msm debug options
Change-Id: I2e0343b3839062130779312e73d090dc1457336f
2021-06-21 23:22:53 +02:00
Andrea 38cdff1e94 matisse-millet: defconfig: remove unused devfreq governors
Change-Id: I1620a217268c5bb21e0c18ed61f11e96c0259a43
2021-06-19 14:51:51 +02:00
Andrea d77c3d5864 matisse-millet: defconfig: remove unused cpufreq governors
Change-Id: Ia1b19016edeaee960e0a0b9c0af154394f5e73c1
2021-06-19 14:51:30 +02:00
Andrea d0fb75e434 matisse-millet: defconfig: Remove unused IO sched algos
* also set noop as default iosched since row was removed

Change-Id: I204c0a22907df6d71782d54f7ed41cc7911dcc44
2021-06-19 14:51:20 +02:00
Andrea 1cfccf2bd6 matisse-millet: defconfig: disable CONFIG_HW_PERF_EVENTS
Change-Id: Iaaba633128143c2e457e1da8ca4b5c3d7f578f8c
Signed-off-by: Andrea Pucci <linckandrea01@gmail.com>
2021-06-19 14:51:05 +02:00
Jann Horn 37f5700deb tty: Fix ->pgrp locking in tiocspgrp()
commit 54ffccbf053b5b6ca4f6e45094b942fab92a25fc upstream.

tiocspgrp() takes two tty_struct pointers: One to the tty that userspace
passed to ioctl() (`tty`) and one to the TTY being changed (`real_tty`).
These pointers are different when ioctl() is called with a master fd.

To properly lock real_tty->pgrp, we must take real_tty->ctrl_lock.

This bug makes it possible for racing ioctl(TIOCSPGRP, ...) calls on
both sides of a PTY pair to corrupt the refcount of `struct pid`,
leading to use-after-free errors.

Fixes: 47f86834bb ("redo locking of tty->pgrp")
CC: stable@kernel.org
Signed-off-by: Jann Horn <jannh@google.com>
Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Change-Id: Ib41dbafa06012374b219c7236968733373189ffd
CVE-2020-29661
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-14 10:34:44 +02:00
Sharath Chandra Vurukala 27776d17b1 net: sockev: avoid races between sockev and socket_close
Use-after-free is seen when sending a sockev netlink message
since socket is not held which can race with sk_free.

KASAN: use-after-free in sockev_client_cb+0x41c/0x4b8
	in net/core/sockev_nlmcast.c:104
Read of size 2 at addr ffffffc08420c550
Call trace:
dump_backtrace+0x0/0x388 arch/arm64/kernel/time.c:55
show_stack+0x24/0x30 arch/arm64/kernel/traps.c:152
__dump_stack+0x24/0x2c lib/dump_stack.c:17
dump_stack+0x8c/0xd0 lib/dump_stack.c:53
print_address_description+0x74/0x234 mm/kasan/report.c:256
kasan_report_error mm/kasan/report.c:354 [inline]
kasan_report+0x240/0x264 mm/kasan/report.c:412
__asan_report_load2_noabort+0x2c/0x38 mm/kasan/report.c:431
sockev_client_cb+0x41c/0x4b8 net/core/sockev_nlmcast.c:104
notifier_call_chain+0x104/0x158 kernel/notifier.c:93
__blocking_notifier_call_chain+0x80/0xb0 kernel/notifier.c:317
blocking_notifier_call_chain+0x3c/0x4c kernel/notifier.c:328
sockev_notify+0x30/0x3c net/socket.c:181
SYSC_bind net/socket.c:1509 [inline]
SyS_bind+0x1ec/0x30c net/socket.c:1489
el0_svc_naked+0x34/0x38
Freed by task 19460:
save_stack mm/kasan/kasan.c:447 [inline]
set_track mm/kasan/kasan.c:459 [inline]
__kasan_slab_free+0x134/0x20c mm/kasan/kasan.c:520
kasan_slab_free+0x10/0x1c mm/kasan/kasan.c:527
slab_free_hook mm/slub.c:1401 [inline]
slab_free_freelist_hook mm/slub.c:1422 [inline]
slab_free mm/slub.c:2979 [inline]
kmem_cache_free+0x114/0x664 mm/slub.c:3001
sk_prot_free net/core/sock.c:1504 [inline]
__sk_destruct+0x324/0x3c0 net/core/sock.c:1585
__sk_free+0x180/0x200 net/core/sock.c:1601
sk_free+0x44/0x50 net/core/sock.c:1612
sock_put include/net/sock.h:1643 [inline]
sk_common_release+0x198/0x20c net/core/sock.c:3014
raw_close+0x38/0x44 net/ipv4/raw.c:703
inet_release+0x128/0x15c net/ipv4/af_inet.c:446
__sock_release+0xb8/0x258 net/socket.c:614
sock_close+0x24/0x34 net/socket.c:1150
__fput+0x1f4/0x4e4 fs/file_table.c:345
____fput+0x20/0x2c fs/file_table.c:380
task_work_run+0x9c/0x174 kernel/task_work.c:113

Change-Id: Idb4335889b6e4228f36d76ca5b6156cc5e5838da
Signed-off-by: Sharath Chandra Vurukala <sharathv@codeaurora.org>
CVE-2020-11234
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-14 10:33:58 +02:00
Jason Yan 89d19456c6 block: Fix use-after-free in blkdev_get()
[ Upstream commit 2d3a8e2deddea6c89961c422ec0c5b851e648c14 ]

In blkdev_get() we call __blkdev_get() to do some internal jobs and if
there is some errors in __blkdev_get(), the bdput() is called which
means we have released the refcount of the bdev (actually the refcount of
the bdev inode). This means we cannot access bdev after that point. But
acctually bdev is still accessed in blkdev_get() after calling
__blkdev_get(). This results in use-after-free if the refcount is the
last one we released in __blkdev_get(). Let's take a look at the
following scenerio:

  CPU0            CPU1                    CPU2
blkdev_open     blkdev_open           Remove disk
                  bd_acquire
		  blkdev_get
		    __blkdev_get      del_gendisk
					bdev_unhash_inode
  bd_acquire          bdev_get_gendisk
    bd_forget           failed because of unhashed
	  bdput
	              bdput (the last one)
		        bdev_evict_inode

	  	    access bdev => use after free

[  459.350216] BUG: KASAN: use-after-free in __lock_acquire+0x24c1/0x31b0
[  459.351190] Read of size 8 at addr ffff88806c815a80 by task syz-executor.0/20132
[  459.352347]
[  459.352594] CPU: 0 PID: 20132 Comm: syz-executor.0 Not tainted 4.19.90 #2
[  459.353628] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
[  459.354947] Call Trace:
[  459.355337]  dump_stack+0x111/0x19e
[  459.355879]  ? __lock_acquire+0x24c1/0x31b0
[  459.356523]  print_address_description+0x60/0x223
[  459.357248]  ? __lock_acquire+0x24c1/0x31b0
[  459.357887]  kasan_report.cold+0xae/0x2d8
[  459.358503]  __lock_acquire+0x24c1/0x31b0
[  459.359120]  ? _raw_spin_unlock_irq+0x24/0x40
[  459.359784]  ? lockdep_hardirqs_on+0x37b/0x580
[  459.360465]  ? _raw_spin_unlock_irq+0x24/0x40
[  459.361123]  ? finish_task_switch+0x125/0x600
[  459.361812]  ? finish_task_switch+0xee/0x600
[  459.362471]  ? mark_held_locks+0xf0/0xf0
[  459.363108]  ? __schedule+0x96f/0x21d0
[  459.363716]  lock_acquire+0x111/0x320
[  459.364285]  ? blkdev_get+0xce/0xbe0
[  459.364846]  ? blkdev_get+0xce/0xbe0
[  459.365390]  __mutex_lock+0xf9/0x12a0
[  459.365948]  ? blkdev_get+0xce/0xbe0
[  459.366493]  ? bdev_evict_inode+0x1f0/0x1f0
[  459.367130]  ? blkdev_get+0xce/0xbe0
[  459.367678]  ? destroy_inode+0xbc/0x110
[  459.368261]  ? mutex_trylock+0x1a0/0x1a0
[  459.368867]  ? __blkdev_get+0x3e6/0x1280
[  459.369463]  ? bdev_disk_changed+0x1d0/0x1d0
[  459.370114]  ? blkdev_get+0xce/0xbe0
[  459.370656]  blkdev_get+0xce/0xbe0
[  459.371178]  ? find_held_lock+0x2c/0x110
[  459.371774]  ? __blkdev_get+0x1280/0x1280
[  459.372383]  ? lock_downgrade+0x680/0x680
[  459.373002]  ? lock_acquire+0x111/0x320
[  459.373587]  ? bd_acquire+0x21/0x2c0
[  459.374134]  ? do_raw_spin_unlock+0x4f/0x250
[  459.374780]  blkdev_open+0x202/0x290
[  459.375325]  do_dentry_open+0x49e/0x1050
[  459.375924]  ? blkdev_get_by_dev+0x70/0x70
[  459.376543]  ? __x64_sys_fchdir+0x1f0/0x1f0
[  459.377192]  ? inode_permission+0xbe/0x3a0
[  459.377818]  path_openat+0x148c/0x3f50
[  459.378392]  ? kmem_cache_alloc+0xd5/0x280
[  459.379016]  ? entry_SYSCALL_64_after_hwframe+0x49/0xbe
[  459.379802]  ? path_lookupat.isra.0+0x900/0x900
[  459.380489]  ? __lock_is_held+0xad/0x140
[  459.381093]  do_filp_open+0x1a1/0x280
[  459.381654]  ? may_open_dev+0xf0/0xf0
[  459.382214]  ? find_held_lock+0x2c/0x110
[  459.382816]  ? lock_downgrade+0x680/0x680
[  459.383425]  ? __lock_is_held+0xad/0x140
[  459.384024]  ? do_raw_spin_unlock+0x4f/0x250
[  459.384668]  ? _raw_spin_unlock+0x1f/0x30
[  459.385280]  ? __alloc_fd+0x448/0x560
[  459.385841]  do_sys_open+0x3c3/0x500
[  459.386386]  ? filp_open+0x70/0x70
[  459.386911]  ? trace_hardirqs_on_thunk+0x1a/0x1c
[  459.387610]  ? trace_hardirqs_off_caller+0x55/0x1c0
[  459.388342]  ? do_syscall_64+0x1a/0x520
[  459.388930]  do_syscall_64+0xc3/0x520
[  459.389490]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[  459.390248] RIP: 0033:0x416211
[  459.390720] Code: 75 14 b8 02 00 00 00 0f 05 48 3d 01 f0 ff ff 0f 83
04 19 00 00 c3 48 83 ec 08 e8 0a fa ff ff 48 89 04 24 b8 02 00 00 00 0f
   05 <48> 8b 3c 24 48 89 c2 e8 53 fa ff ff 48 89 d0 48 83 c4 08 48 3d
      01
[  459.393483] RSP: 002b:00007fe45dfe9a60 EFLAGS: 00000293 ORIG_RAX: 0000000000000002
[  459.394610] RAX: ffffffffffffffda RBX: 00007fe45dfea6d4 RCX: 0000000000416211
[  459.395678] RDX: 00007fe45dfe9b0a RSI: 0000000000000002 RDI: 00007fe45dfe9b00
[  459.396758] RBP: 000000000076bf20 R08: 0000000000000000 R09: 000000000000000a
[  459.397930] R10: 0000000000000075 R11: 0000000000000293 R12: 00000000ffffffff
[  459.399022] R13: 0000000000000bd9 R14: 00000000004cdb80 R15: 000000000076bf2c
[  459.400168]
[  459.400430] Allocated by task 20132:
[  459.401038]  kasan_kmalloc+0xbf/0xe0
[  459.401652]  kmem_cache_alloc+0xd5/0x280
[  459.402330]  bdev_alloc_inode+0x18/0x40
[  459.402970]  alloc_inode+0x5f/0x180
[  459.403510]  iget5_locked+0x57/0xd0
[  459.404095]  bdget+0x94/0x4e0
[  459.404607]  bd_acquire+0xfa/0x2c0
[  459.405113]  blkdev_open+0x110/0x290
[  459.405702]  do_dentry_open+0x49e/0x1050
[  459.406340]  path_openat+0x148c/0x3f50
[  459.406926]  do_filp_open+0x1a1/0x280
[  459.407471]  do_sys_open+0x3c3/0x500
[  459.408010]  do_syscall_64+0xc3/0x520
[  459.408572]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[  459.409415]
[  459.409679] Freed by task 1262:
[  459.410212]  __kasan_slab_free+0x129/0x170
[  459.410919]  kmem_cache_free+0xb2/0x2a0
[  459.411564]  rcu_process_callbacks+0xbb2/0x2320
[  459.412318]  __do_softirq+0x225/0x8ac

Fix this by delaying bdput() to the end of blkdev_get() which means we
have finished accessing bdev.

Fixes: 77ea887e43 ("implement in-kernel gendisk events handling")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Jason Yan <yanaijie@huawei.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Ming Lei <ming.lei@redhat.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Change-Id: I642bd3c3224cc174ba4bdd57133b1a17fb35dccd
CVE-2020-15436
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-06-14 10:33:22 +02:00
Kevin F. Haggerty cb4cd8c867 fs: sdfat: __sdfat_submit_bio_write() should always submit a WRITE
sdfat version 2.4.5 introduced wbc_to_write_flags() as a compat
function for legacy kernels. Unfortunately, as the legacy
__sdfat_submit_bio_write() path was adapted to take advantage of
wbc_to_write_flags(), it used the return value direcly as the
rw paramater to submit_bio(), and the default return value is 0
(READ). This becomes a problem later when write paths assert that
bio_data_dir() is WRITE (i.e., write bit of bio->bi_rw is set).

Pass a bitwise-or of WRITE and the return value of wbc_to_write_flags()
to submit_bio() on this legacy path. This logically unifies the
approach with the newer path here and directly with the legacy path of
__sdfat_submit_bio_write2() in mpage.c.

Fixes: afd489c6a8c8 ("fs: sdfat: Update to version 2.4.5")
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: Ic7b937a467e9e116c3390c6ac0e009a59229b93c
2021-06-14 10:32:51 +02:00
matteo0026 65b94c0848 matisse-millet: defconfig: disable FM driver
We don't have support for FM radio.

Change-Id: I85404d6b593496945e182324d93177ccef0f03b9
2021-05-10 19:38:21 +02:00
matteo0026 105b2c3c11 matisse-millet: defconfig: remove special HID drivers
Change-Id: Id959ef8283989720518c93d441a1aeee064c426a
2021-05-10 19:38:21 +02:00
Alessandro Astone 0a9d23f5a9 matisse-millet: defconfig: Disable serial console
Change-Id: I932ddbd5396c192c030e61b2ad90bc39c44be033
2021-05-10 19:38:20 +02:00
matteo0026 db42761076 ARM: configs: regenerate matisse-millet family defconfig
(cherry-picked from I0d6cc85df548e782948027b85fc258722d60d6da)

Change-Id: Iffa94c0dfa58807f0df0f79477deb30cd91dd6f9
2021-05-10 19:38:20 +02:00
Arne Coucheron 0465cb2b1b matisse-millet: defconfig: Enable MEMCG
(cherry-picked from Ifdb8242721a5ee97a3c78493a31eb3b692d67436)

Change-Id: I222516d5de07e204d467818bd02efbf12af2c770
2021-05-10 19:37:52 +02:00
Arne Coucheron c4191aaba7 defconfig: Rework of lineageos_{matisse*,millet*}_defconfig
* Disable more debug to work around recovery image size issue.
 * Drop some HID drivers as well

(cherry-picked from commit 2b3792d889)

Change-Id: Ifd18b9bb3a8c7cf8fba051781cf0a71764882d88
2021-05-10 19:37:41 +02:00
Dirk Mueller c1390269a8 scripts/dtc: Remove redundant YYLOC global declaration
commit e33a814e772cdc36436c8c188d8c42d019fda639 upstream.

gcc 10 will default to -fno-common, which causes this error at link
time:

  (.text+0x0): multiple definition of `yylloc'; dtc-lexer.lex.o (symbol from plugin):(.text+0x0): first defined here

This is because both dtc-lexer as well as dtc-parser define the same
global symbol yyloc. Before with -fcommon those were merged into one
defintion. The proper solution would be to to mark this as "extern",
however that leads to:

  dtc-lexer.l:26:16: error: redundant redeclaration of 'yylloc' [-Werror=redundant-decls]
   26 | extern YYLTYPE yylloc;
      |                ^~~~~~
In file included from dtc-lexer.l:24:
dtc-parser.tab.h:127:16: note: previous declaration of 'yylloc' was here
  127 | extern YYLTYPE yylloc;
      |                ^~~~~~
cc1: all warnings being treated as errors

which means the declaration is completely redundant and can just be
dropped.

Signed-off-by: Dirk Mueller <dmueller@suse.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
[robh: cherry-pick from upstream]
Cc: stable@vger.kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
[nc: Also apply to dtc-lexer.lex.c_shipped due to a lack of
     e039139be8c2, where dtc-lexer.l started being used]
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I4bf2bb3d734edb1caf4d3c2cf9c20ec42d6953ae
2021-05-10 19:37:22 +02:00
Rob Herring 108a293bfb scripts/dtc: Update to upstream version 9d3649bd3be245c9
Sync dtc with upstream as of commit 9d3649bd3be2 (Add testcases for
fdt_path_offset_namelen()).

Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: devicetree@vger.kernel.org
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I5a60614c853977b3b37607e43898367f16427f24
2021-05-10 19:37:10 +02:00
Gaurav Minocha 55213352ff scripts/dtc: add missing libfdt and fixups to import script
The following script is used to import dtc upstream
into kernel. It was missing import of dtc/libfdt, with
this commit it will include the same.

Also, currently in arch and driver code that needs early access to
the flattened device tree it is necessary to add specific CFLAGS
so that when scripts/dtc/libfdt/libfdt.h is included the C
preprocessor is able to locate the libfdt versions of libfdt_env.h
and fdt.h without generating an error. So, this script replaces
angular brackets with quotation used to include header files
fdt.h and libfdt_env.h

Signed-off-by: Gaurav Minocha <gaurav.minocha.os@gmail.com>
[robh: reword commit headline and add 'git add']
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: Ie6ee63c35cb68eacbc772f4cfe094e997230f79f
2021-05-10 19:36:58 +02:00
Grant Likely 11eed246bf scripts/dtc: Add a script to update to mainline dtc source
A very simple script that automates pulling in a newer version of DTC.
Not particularly robust, but a whole lot better than doing it by hand
every time.

Signed-off-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: Id6fe244d5e3b0c1f88d091b683d18337fb824b8f
2021-05-10 19:36:49 +02:00
Grant Likely fc7fdbc96c scripts/dtc: Update to upstream version v1.4.0
Update to the latest version of dtc with the following notable
enhancements and bug fixes:

* fdtput: expand fdt if value does not fit
* dtc/fdt{get, put}/convert-dtsv0-lexer: convert to new usage helpers
* libfdt: Add fdt_next_subnode() to permit easy subnode iteration
* utilfdt_read: pass back up the length of data read
* util_version: new helper for displaying version info
* die: constify format string arg
* utilfdt_read_err: use xmalloc funcs
* Export fdt_stringlist_contains()
* dtc: Drop the '-S is deprecated' warning
* dtc/libfdt: sparse fixes
* dtc/libfdt: introduce fdt types for annotation by endian checkers
* Fix util_is_printable_string
* dtc: srcpos_verror() should print to stderr
* libfdt: Added missing functions to shared library

Shipped bison/flex generated files were built on an Ubuntu 13.10 system.

Signed-off-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I53802e93e30fe14714fe58ace062a6b0c18c2213
2021-05-10 19:36:41 +02:00
Grant Likely 6c835c082d scripts/dtc: Update shipped files to build with bison 2.7.12
Preparation patch before updating to upstream dtc version 1.4.0. This
change only contains the changes caused by a new version of bison
on the shipped files. There are no functional changes.

The shipped files were build on an Ubuntu 13.10 system

Signed-off-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I63e4a628547c44ae8ee96ee3d7ff9589751c6e01
2021-05-10 19:36:31 +02:00
Grant Likely ec231f749e dtc: ensure #line directives don't consume data from the next line
Previously, the #line parsing regex ended with ({WS}+[0-9]+)?. The {WS}
could match line-break characters. If the #line directive did not contain
the optional flags field at the end, this could cause any integer data on
the next line to be consumed as part of the #line directive parsing. This
could cause syntax errors (i.e. #line parsing consuming the leading 0
from a hex literal 0x1234, leaving x1234 to be parsed as cell data,
which is a syntax error), or invalid compilation results (i.e. simply
consuming literal 1234 as part of the #line processing, thus removing it
from the cell data).

Fix this by replacing {WS} with [ \t] so that it can't match line-breaks.

Convert all instances of {WS}, even though the other instances should be
irrelevant for any well-formed #line directive. This is done for
consistency and ultimate safety.

[Cherry picked from DTC commit a1ee6f068e1c8dbc62873645037a353d7852d5cc]

Reported-by: Ian Campbell <Ian.Campbell@citrix.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I4fac1e5b18854f7d93d3c29bd2735e983050cce3
2021-05-10 19:36:22 +02:00
Grant Likely 22cc8818d4 dtc: Update generated files to output from Bison 2.5
This patch merely updates the generated dtc parser and lexer files to
the output generated by Bison 2.5. The previous versions were generated
from version 2.4.1. The only reason for this commit is to minimize the
diff on the next commit which fixes a bug in the DTC #line directive
parsing. Otherwise the Bison changes would be intermingled with the
functional changes.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I0ea3ed81281d0d55c6c9d20d2ec33a69ddc42d3b
2021-05-10 19:36:11 +02:00
Marc Zyngier f0b8e9e44b HID: core: Sanitize event code and type when mapping input
commit 35556bed836f8dc07ac55f69c8d17dce3e7f0e25 upstream.

When calling into hid_map_usage(), the passed event code is
blindly stored as is, even if it doesn't fit in the associated bitmap.

This event code can come from a variety of sources, including devices
masquerading as input devices, only a bit more "programmable".

Instead of taking the event code at face value, check that it actually
fits the corresponding bitmap, and if it doesn't:
- spit out a warning so that we know which device is acting up
- NULLify the bitmap pointer so that we catch unexpected uses

Code paths that can make use of untrusted inputs can now check
that the mapping was indeed correct and bail out if not.

Cc: stable@vger.kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Change-Id: Ida234c943583d8b0274e1eff8bf419ba18978191
CVE-2020-0465
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-04-16 12:12:57 +02:00
Indira Biruduraju 6fa86e0e6d msm: kgsl: Remove VM_MAYWRITE flag to restrict mprotect
When VM_MAYWRITE flag is used during mmap(), mprotect()
can be used later to change the protection of memstore
to allow write. Make sure this does not happen by
removing VM_MAYWRITE from the vm_flags of vma.

Change-Id: I6f69f05858ea40611d512cfa796caabeaa88cdb5
Signed-off-by: Indira Biruduraju <ibirudur@codeaurora.org>
CVE-2020-11282
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:08 +01:00
Xin Long a2854e4f01 ipv6: check sk sk_type and protocol early in ip_mroute_set/getsockopt
[ Upstream commit 99253eb750fda6a644d5188fb26c43bad8d5a745 ]

Commit 5e1859fbcc3c ("ipv4: ipmr: various fixes and cleanups") fixed
the issue for ipv4 ipmr:

  ip_mroute_setsockopt() & ip_mroute_getsockopt() should not
  access/set raw_sk(sk)->ipmr_table before making sure the socket
  is a raw socket, and protocol is IGMP

The same fix should be done for ipv6 ipmr as well.

This patch can fix the panic caused by overwriting the same offset
as ipmr_table as in raw_sk(sk) when accessing other type's socket
by ip_mroute_setsockopt().

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Change-Id: I8d48f4611a2f2d0cb7ad5146036f571f12ecb1fc
CVE-2017-18509
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:08 +01:00
Eric Dumazet 1435e43b39 ipv4: ipmr: various fixes and cleanups
1) ip_mroute_setsockopt() & ip_mroute_getsockopt() should not
   access/set raw_sk(sk)->ipmr_table before making sure the socket
   is a raw socket, and protocol is IGMP

2) MRT_INIT should return -EINVAL if optlen != sizeof(int), not
   -ENOPROTOOPT

3) MRT_ASSERT & MRT_PIM should validate optlen

4) " (v) ? 1 : 0 " can be written as " !!v "

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I606493fe572b29f2c6a709833e799e20f2212882
2021-02-10 10:59:08 +01:00
Lorenzo Colitti 2cdb85c803 net: inet: Support UID-based routing in IP protocols.
- Use the UID in routing lookups made by protocol connect() and
  sendmsg() functions.
- Make sure that routing lookups triggered by incoming packets
  (e.g., Path MTU discovery) take the UID of the socket into
  account.
- For packets not associated with a userspace socket, (e.g., ping
  replies) use UID 0 inside the user namespace corresponding to
  the network namespace the socket belongs to. This allows
  all namespaces to apply routing and iptables rules to
  kernel-originated traffic in that namespaces by matching UID 0.
  This is better than using the UID of the kernel socket that is
  sending the traffic, because the UID of kernel sockets created
  at namespace creation time (e.g., the per-processor ICMP and
  TCP sockets) is the UID of the user that created the socket,
  which might not be mapped in the namespace.

Bug: 16355602
Change-Id: I910504b508948057912bc188fd1e8aca28294de3
Tested: compiles allnoconfig, allyesconfig, allmodconfig
Tested: https://android-review.googlesource.com/253302
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:07 +01:00
Eric Dumazet 5ad6c30e39 net: add sk_fullsock() helper
We have many places where we want to check if a socket is
not a timewait or request socket. Use a helper to avoid
hard coding this.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

[backported from net-next 1d0ab253872cdd3d8e7913f59c266c7fd01771d0]
[lorenzo@google.com: removed TCPF_NEW_SYN_RECV, and added a comment to add it back.]

Signed-off-by: Lorenzo Colitti <lorenzo@google.com>

Bug: 24163529
Change-Id: Ibf09017e1ab00af5e6925273117c335d7f515d73
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:07 +01:00
Eric Dumazet a12bee8c4d tcp: fix more NULL deref after prequeue changes
When I cooked commit c3658e8d0f1 ("tcp: fix possible NULL dereference in
tcp_vX_send_reset()") I missed other spots we could deref a NULL
skb_dst(skb)

Again, if a socket is provided, we do not need skb_dst() to get a
pointer to network namespace : sock_net(sk) is good enough.

[Backport of net-next 0f85feae6b710ced3abad5b2b47d31dfcb956b62]

Bug: 16355602
Change-Id: Ibe1def7979625ee7902bff2f33ec8945b9945948
Reported-by: Dann Frazier <dann.frazier@canonical.com>
Bisected-by: Dann Frazier <dann.frazier@canonical.com>
Tested-by: Dann Frazier <dann.frazier@canonical.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Fixes: ca777eff51f7 ("tcp: remove dst refcount false sharing for prequeue mode")
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:07 +01:00
David S. Miller 2f490c7099 ipv6: Fix types of ip6_update_pmtu().
The mtu should be a __be32, not the mark.

Reported-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Change-Id: Ie321dcc3652921f8f28491d39c8262268aeb22bc
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:07 +01:00
David S. Miller 2d1ee14b86 ipv6: Handle PMTU in ICMP error handlers.
One tricky issue on the ipv6 side vs. ipv4 is that the ICMP callouts
to handle the error pass the 32-bit info cookie in network byte order
whereas ipv4 passes it around in host byte order.

Like the ipv4 side, we have two helper functions.  One for when we
have a socket context and one for when we do not.

ip6ip6 tunnels are not handled here, because they handle PMTU events
by essentially relaying another ICMP packet-too-big message back to
the original sender.

This patch allows us to get rid of rt6_do_pmtu_disc().  It handles all
kinds of situations that simply cannot happen when we do the PMTU
update directly using a fully resolved route.

In fact, the "plen == 128" check in ip6_rt_update_pmtu() can very
likely be removed or changed into a BUG_ON() check.  We should never
have a prefixed ipv6 route when we get there.

Another piece of strange history here is that TCP and DCCP, unlike in
ipv4, never invoke the update_pmtu() method from their ICMP error
handlers.  This is incredibly astonishing since this is the context
where we have the most accurate context in which to make a PMTU
update, namely we have a fully connected socket and associated cached
socket route.

Signed-off-by: David S. Miller <davem@davemloft.net>
Change-Id: Ibb5cae4316256108c5130459b07288c9fc7380c3
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:07 +01:00
Eric Biggers 3b4dd0e13f net: socket: don't set sk_uid to garbage value in ->setattr()
->setattr() was recently implemented for socket files to sync the socket
inode's uid to the new 'sk_uid' member of struct sock.  It does this by
copying over the ia_uid member of struct iattr.  However, ia_uid is
actually only valid when ATTR_UID is set in ia_valid, indicating that
the uid is being changed, e.g. by chown.  Other metadata operations such
as chmod or utimes leave ia_uid uninitialized.  Therefore, sk_uid could
be set to a "garbage" value from the stack.

Fix this by only copying the uid over when ATTR_UID is set.

[backport of net e1a3a60a2ebe991605acb14cd58e39c0545e174e]

Bug: 16355602
Change-Id: I20e53848e54282b72a388ce12bfa88da5e3e9efe
Fixes: 86741ec25462 ("net: core: Add a UID field to struct sock.")
Signed-off-by: Eric Biggers <ebiggers@google.com>
Tested-by: Lorenzo Colitti <lorenzo@google.com>
Acked-by: Lorenzo Colitti <lorenzo@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:06 +01:00
Lorenzo Colitti 8294ddad9a net: core: Add a UID field to struct sock.
Protocol sockets (struct sock) don't have UIDs, but most of the
time, they map 1:1 to userspace sockets (struct socket) which do.

Various operations such as the iptables xt_owner match need
access to the "UID of a socket", and do so by following the
backpointer to the struct socket. This involves taking
sk_callback_lock and doesn't work when there is no socket
because userspace has already called close().

Simplify this by adding a sk_uid field to struct sock whose value
matches the UID of the corresponding struct socket. The semantics
are as follows:

1. Whenever sk_socket is non-null: sk_uid is the same as the UID
   in sk_socket, i.e., matches the return value of sock_i_uid.
   Specifically, the UID is set when userspace calls socket(),
   fchown(), or accept().
2. When sk_socket is NULL, sk_uid is defined as follows:
   - For a socket that no longer has a sk_socket because
     userspace has called close(): the previous UID.
   - For a cloned socket (e.g., an incoming connection that is
     established but on which userspace has not yet called
     accept): the UID of the socket it was cloned from.
   - For a socket that has never had an sk_socket: UID 0 inside
     the user namespace corresponding to the network namespace
     the socket belongs to.

Kernel sockets created by sock_create_kern are a special case
of #1 and sk_uid is the user that created them. For kernel
sockets created at network namespace creation time, such as the
per-processor ICMP and TCP sockets, this is the user that created
the network namespace.

[Backport of net-next 86741ec25462e4c8cdce6df2f41ead05568c7d5e]

Bug: 16355602
Change-Id: I73e1a57dfeedf672f4c2dfc9ce6867838b55974b
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:06 +01:00
Masatake YAMATO 4b28ed8781 net: Providing protocol type via system.sockprotoname xattr of /proc/PID/fd entries
lsof reports some of socket descriptors as "can't identify protocol" like:

    [yamato@localhost]/tmp% sudo lsof | grep dbus | grep iden
    dbus-daem   652          dbus    6u     sock ... 17812 can't identify protocol
    dbus-daem   652          dbus   34u     sock ... 24689 can't identify protocol
    dbus-daem   652          dbus   42u     sock ... 24739 can't identify protocol
    dbus-daem   652          dbus   48u     sock ... 22329 can't identify protocol
    ...

lsof cannot resolve the protocol used in a socket because procfs
doesn't provide the map between inode number on sockfs and protocol
type of the socket.

For improving the situation this patch adds an extended attribute named
'system.sockprotoname' in which the protocol name for
/proc/PID/fd/SOCKET is stored. So lsof can know the protocol for a
given /proc/PID/fd/SOCKET with getxattr system call.

A few weeks ago I submitted a patch for the same purpose. The patch
was introduced /proc/net/sockfs which enumerates inodes and protocols
of all sockets alive on a system. However, it was rejected because (1)
a global lock was needed, and (2) the layout of struct socket was
changed with the patch.

This patch doesn't use any global lock; and doesn't change the layout
of any structs.

In this patch, a protocol name is stored to dentry->d_name of sockfs
when new socket is associated with a file descriptor. Before this
patch dentry->d_name was not used; it was just filled with empty
string. lsof may use an extended attribute named
'system.sockprotoname' to retrieve the value of dentry->d_name.

It is nice if we can see the protocol name with ls -l
/proc/PID/fd. However, "socket:[#INODE]", the name format returned
from sockfs_dname() was already defined. To keep the compatibility
between kernel and user land, the extended attribute is used to
prepare the value of dentry->d_name.

Change-Id: I04143ee6da5c236835a897086fc0de819abb0cdc
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:06 +01:00
Sabrina Dubroca af262d4b6a BACKPORT: tcp: fix recv with flags MSG_WAITALL | MSG_PEEK
Currently, tcp_recvmsg enters a busy loop in sk_wait_data if called
with flags = MSG_WAITALL | MSG_PEEK.

sk_wait_data waits for sk_receive_queue not empty, but in this case,
the receive queue is not empty, but does not contain any skb that we
can use.

Add a "last skb seen on receive queue" argument to sk_wait_data, so
that it sleeps until the receive queue has new skbs.

Change-Id: If58492ae474effe058541f7e9a0c03dc24155393
Link: https://bugzilla.kernel.org/show_bug.cgi?id=99461
Link: https://sourceware.org/bugzilla/show_bug.cgi?id=18493
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1205258
Reported-by: Enrico Scholz <rh-bugzilla@ensc.de>
Reported-by: Dan Searle <dan@censornet.com>
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:06 +01:00
Joe Perches 6c89e3f369 BACKPORT: sock.h: Remove extern from function prototypes
There are a mix of function prototypes with and without extern
in the kernel sources.  Standardize on not using extern for
function prototypes.

Function prototypes don't need to be written with extern.
extern is assumed by the compiler.  Its use is as unnecessary as
using auto to declare automatic/local variables in a block.

Change-Id: I65041ae9f8472dc9f84f5f8e09dc3ac859c7d05a
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Adrian DC <radian.dc@gmail.com>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:06 +01:00
Daniel Borkmann 01d1b74604 BACKPORT: net: sock: make sock_tx_timestamp void
Currently, sock_tx_timestamp() always returns 0. The comment that
describes the sock_tx_timestamp() function wrongly says that it
returns an error when an invalid argument is passed (from commit
20d4947353, ``net: socket infrastructure for SO_TIMESTAMPING'').
Make the function void, so that we can also remove all the unneeded
if conditions that check for such a _non-existant_ error case in the
output path.

Change-Id: Ibdfd5071737190371d4abec5ae76046b5aa8de23
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:06 +01:00
Eric Dumazet 362bd6541f BACKPORT: net: include/net/sock.h cleanup
bool/const conversions where possible

__inline__ -> inline

space cleanups

Change-Id: I0ee0135e737edd702f753fac182b293ec5cc652a
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:05 +01:00
Will Deacon a580966985 BACKPORT: ipc: add COMPAT_SHMLBA support
If the SHMLBA definition for a native task differs from the definition for
a compat task, the do_shmat() function would need to handle both.

This patch introduces COMPAT_SHMLBA, which is used by the compat shmat
syscall when calling the ipc code and allows architectures such as AArch64
(where the native SHMLBA is 64k but the compat (AArch32) definition is
16k) to provide the correct semantics for compat IPC system calls.

Change-Id: I0292f1fedabaa6cbbab843611aa76a8f50f47771
Cc: David S. Miller <davem@davemloft.net>
Cc: Chris Zankel <chris@zankel.net>
Cc: Arnd Bergmann <arnd@arndb.de>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:59:05 +01:00
Manoj Prabhu B ad3a244b23 diag: Prevent resource leakage of task structure
The task structure with reference count incremented while
dci client is registered should be updated with reference count
decremented in failure case of registration.

Change-Id: I093229d83dca2699e0343224756895eff0915e38
Signed-off-by: Manoj Prabhu B <bmanoj@codeaurora.org>
CVE-2020-11160
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:58:45 +01:00
Alexander Potapenko b21f81c136 fs/binfmt_elf.c: allocate initialized memory in fill_thread_core_info()
KMSAN reported uninitialized data being written to disk when dumping
core.  As a result, several kilobytes of kmalloc memory may be written
to the core file and then read by a non-privileged user.

Reported-by: sam <sunhaoyl@outlook.com>
Signed-off-by: Alexander Potapenko <glider@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Kees Cook <keescook@chromium.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: <stable@vger.kernel.org>
Link: http://lkml.kernel.org/r/20200419100848.63472-1-glider@google.com
Link: https://github.com/google/kmsan/issues/76
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Change-Id: Ied98293668eb41e3880b48a2852b7c906361bed2
CVE-2020-10732
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-02-10 10:58:36 +01:00
Al Viro 339fb00d09 fix regression in "epoll: Keep a reference on files added to the check list"
[ Upstream commit 77f4689de17c0887775bb77896f4cc11a39bf848 ]

epoll_loop_check_proc() can run into a file already committed to destruction;
we can't grab a reference on those and don't need to add them to the set for
reverse path check anyway.

Bug: 147802478

Change-Id: I1a5cf115df27a108c17fe3c1159f19a0254217ee
Tested-by: Marc Zyngier <maz@kernel.org>
Fixes: a9ed4a6560b8 ("epoll: Keep a reference on files added to the check list")
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-01-03 21:26:17 +01:00
Konstantin Khlebnikov d156ebf3c6 mm: rcu-protected get_mm_exe_file()
This patch removes mm->mmap_sem from mm->exe_file read side.
Also it kills dup_mm_exe_file() and moves exe_file duplication into
dup_mmap() where both mmap_sems are locked.

[akpm@linux-foundation.org: fix comment typo]
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Cc: Davidlohr Bueso <dbueso@suse.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: "Paul E. McKenney" <paulmck@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[haggertk: Backport to 3.4; __fget() in fs/file.c not applicable]
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I7fbc5b638f9ac9e74cd9adfdfb92c81e1146080c
2021-01-03 21:26:17 +01:00
Marc Zyngier 1f6c0a04ce epoll: Keep a reference on files added to the check list
commit a9ed4a6560b8562b7e2e2bed9527e88001f7b682 upstream.

When adding a new fd to an epoll, and that this new fd is an
epoll fd itself, we recursively scan the fds attached to it
to detect cycles, and add non-epool files to a "check list"
that gets subsequently parsed.

However, this check list isn't completely safe when deletions
can happen concurrently. To sidestep the issue, make sure that
a struct file placed on the check list sees its f_count increased,
ensuring that a concurrent deletion won't result in the file
disapearing from under our feet.

Cc: stable@vger.kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Change-Id: I780923748a8387fa6b3174b952ca22994a377170
CVE-2020-0466
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-01-03 21:26:17 +01:00
Mao Wenan e4fe73d6ca af_packet: set defaule value for tmo
[ Upstream commit b43d1f9f7067c6759b1051e8ecb84e82cef569fe ]

There is softlockup when using TPACKET_V3:
...
NMI watchdog: BUG: soft lockup - CPU#2 stuck for 60010ms!
(__irq_svc) from [<c0558a0c>] (_raw_spin_unlock_irqrestore+0x44/0x54)
(_raw_spin_unlock_irqrestore) from [<c027b7e8>] (mod_timer+0x210/0x25c)
(mod_timer) from [<c0549c30>]
(prb_retire_rx_blk_timer_expired+0x68/0x11c)
(prb_retire_rx_blk_timer_expired) from [<c027a7ac>]
(call_timer_fn+0x90/0x17c)
(call_timer_fn) from [<c027ab6c>] (run_timer_softirq+0x2d4/0x2fc)
(run_timer_softirq) from [<c021eaf4>] (__do_softirq+0x218/0x318)
(__do_softirq) from [<c021eea0>] (irq_exit+0x88/0xac)
(irq_exit) from [<c0240130>] (msa_irq_exit+0x11c/0x1d4)
(msa_irq_exit) from [<c0209cf0>] (handle_IPI+0x650/0x7f4)
(handle_IPI) from [<c02015bc>] (gic_handle_irq+0x108/0x118)
(gic_handle_irq) from [<c0558ee4>] (__irq_usr+0x44/0x5c)
...

If __ethtool_get_link_ksettings() is failed in
prb_calc_retire_blk_tmo(), msec and tmo will be zero, so tov_in_jiffies
is zero and the timer expire for retire_blk_timer is turn to
mod_timer(&pkc->retire_blk_timer, jiffies + 0),
which will trigger cpu usage of softirq is 100%.

Fixes: f6fb8f100b ("af-packet: TPACKET_V3 flexible buffer implementation.")
Tested-by: Xiao Jiangfeng <xiaojiangfeng@huawei.com>
Signed-off-by: Mao Wenan <maowenan@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ib4462f4d194bde7e6acaf2da681596460d5d810a
CVE-2019-20812
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-01-03 21:26:17 +01:00
Sergey Matyukevich acc2711b0e cfg80211: add missing policy for NL80211_ATTR_STATUS_CODE
[ Upstream commit ea75080110a4c1fa011b0a73cb8f42227143ee3e ]

The nl80211_policy is missing for NL80211_ATTR_STATUS_CODE attribute.
As a result, for strictly validated commands, it's assumed to not be
supported.

Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Link: https://lore.kernel.org/r/20200213131608.10541-2-sergey.matyukevich.os@quantenna.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Change-Id: I3a02dca53675d9b76bb49e16ecf3a6413d16d867
CVE-2020-27068
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-01-03 21:26:17 +01:00
Marc Zyngier 92284b6167 HID: core: Correctly handle ReportSize being zero
commit bce1305c0ece3dc549663605e567655dd701752c upstream.

It appears that a ReportSize value of zero is legal, even if a bit
non-sensical. Most of the HID code seems to handle that gracefully,
except when computing the total size in bytes. When fed as input to
memset, this leads to some funky outcomes.

Detect the corner case and correctly compute the size.

Cc: stable@vger.kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Change-Id: I0e61ea8b763669affdff3b8788a5fc66a8b7fcd3
CVE-2020-0465
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2021-01-03 21:26:17 +01:00
Kevin F. Haggerty 50e6e0a7bf fs: sdfat: Update to version 2.4.5
* Samsung source G981USQU1CTKH

Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I79b75d2e47e9be33b311b8d72ac92c66b45a7df1
2021-01-03 21:26:17 +01:00
Arne Coucheron a78ab2e394 defconfig: Rework of lineageos_s3ve3g{ds,jv,xx}_defconfig
* Disable more debug to work around recovery image size issue.
 * Drop some HID drivers as well

Change-Id: Ibcca597401eb160888442ea3cf7840ad82069d47
2020-12-31 10:31:37 +01:00
Francescodario Cuzzocrea ed83a05b2d ARM: configs: regenerate s3ve3g family defconfig
Change-Id: Ia89f71b6f93364256d19e574da16b2829e36c5ee
2020-12-30 21:29:03 +01:00
prototype74 33ebfecd87 milletltetmo: fix battery counting
Before, device booted only with charger plugged in and showed 0%. Source wasn't ok to handle sec-fuelgauge correctly.

Change-Id: If19ed4877fc965c588e65a2deef3977a192aa30a
2020-12-09 16:03:14 +01:00
prototype74 b9965297b1 fixup! s3ve3g: improved sec-battery compatibility with additional fixes
* fix usage of logical AND operator

Change-Id: Idbceca2e123ac12af7f147094b072b5511524a48
2020-11-16 10:36:14 +01:00
prototype74 b4778b70f0 s3ve3g: improved sec-battery compatibility with additional fixes
- Disabled increasing VDDMAX in qpnp-charger
- Fixed non-charging issue after flashlight has been turned off while charging
- Enabled battery swelling protection (CONFIG_BATTERY_SWELLING) in sec-battery to s3ve3g devices (proper configs are defined in battery header already)
- Enabled prevent SOC jump. The battery driver will slowly add a SOC until it's 100 when the average current is below 170 and min SOC is 93
- Reduced minimum expected full condition SOC from 95 to 93
- Removed 'ext-ovp-present' bool from device tree as only qpnp-sec-charger calls it
- Reworked default high battery temperature threshold/recovery (60°C/47°C to 58°C/53°C) also while in LPM
- Switched from Qualcomm's flash-boot-supply to Samsung's flash regulator disabler/enabler
- Switched from time measure check type (2400 mins) to current check type (<170mA) while charging to report full charged condition

Change-Id: Id74e3d9497d381a389ae56096c61dfa7200a83cf
2020-11-16 10:35:54 +01:00
Deepak Kumar Singh fe627a1d42 soc: qcom: smem: validate fields of shared structures
Structures in shared memory that can be modified by remote
processors may have untrusted values, they should be validated
before use.

Adding proper validation before using fields of shared
structures.

CRs-Fixed: 2421602
Change-Id: I947ed5b0fe5705e5223d75b0ea8aafb36113ca5a
Signed-off-by: Deepak Kumar Singh <deesin@codeaurora.org>
[haggertk: Backport to 3.4/msm8974. Adjust context]
CVE-2019-10527
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2020-11-09 11:01:32 +01:00
Will Deacon 898e407b05 media: uvcvideo: Avoid cyclic entity chains due to malformed USB descriptors
commit 68035c80e129c4cfec659aac4180354530b26527 upstream.

Way back in 2017, fuzzing the 4.14-rc2 USB stack with syzkaller kicked
up the following WARNING from the UVC chain scanning code:

  | list_add double add: new=ffff880069084010, prev=ffff880069084010,
  | next=ffff880067d22298.
  | ------------[ cut here ]------------
  | WARNING: CPU: 1 PID: 1846 at lib/list_debug.c:31 __list_add_valid+0xbd/0xf0
  | Modules linked in:
  | CPU: 1 PID: 1846 Comm: kworker/1:2 Not tainted
  | 4.14.0-rc2-42613-g1488251d1a98 #238
  | Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
  | Workqueue: usb_hub_wq hub_event
  | task: ffff88006b01ca40 task.stack: ffff880064358000
  | RIP: 0010:__list_add_valid+0xbd/0xf0 lib/list_debug.c:29
  | RSP: 0018:ffff88006435ddd0 EFLAGS: 00010286
  | RAX: 0000000000000058 RBX: ffff880067d22298 RCX: 0000000000000000
  | RDX: 0000000000000058 RSI: ffffffff85a58800 RDI: ffffed000c86bbac
  | RBP: ffff88006435dde8 R08: 1ffff1000c86ba52 R09: 0000000000000000
  | R10: 0000000000000002 R11: 0000000000000000 R12: ffff880069084010
  | R13: ffff880067d22298 R14: ffff880069084010 R15: ffff880067d222a0
  | FS:  0000000000000000(0000) GS:ffff88006c900000(0000) knlGS:0000000000000000
  | CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  | CR2: 0000000020004ff2 CR3: 000000006b447000 CR4: 00000000000006e0
  | Call Trace:
  |  __list_add ./include/linux/list.h:59
  |  list_add_tail+0x8c/0x1b0 ./include/linux/list.h:92
  |  uvc_scan_chain_forward.isra.8+0x373/0x416
  | drivers/media/usb/uvc/uvc_driver.c:1471
  |  uvc_scan_chain drivers/media/usb/uvc/uvc_driver.c:1585
  |  uvc_scan_device drivers/media/usb/uvc/uvc_driver.c:1769
  |  uvc_probe+0x77f2/0x8f00 drivers/media/usb/uvc/uvc_driver.c:2104

Looking into the output from usbmon, the interesting part is the
following data packet:

  ffff880069c63e00 30710169 C Ci:1:002:0 0 143 = 09028f00 01030080
  00090403 00000e01 00000924 03000103 7c003328 010204db

If we drop the lead configuration and interface descriptors, we're left
with an output terminal descriptor describing a generic display:

  /* Output terminal descriptor */
  buf[0]	09
  buf[1]	24
  buf[2]	03	/* UVC_VC_OUTPUT_TERMINAL */
  buf[3]	00	/* ID */
  buf[4]	01	/* type == 0x0301 (UVC_OTT_DISPLAY) */
  buf[5]	03
  buf[6]	7c
  buf[7]	00	/* source ID refers to self! */
  buf[8]	33

The problem with this descriptor is that it is self-referential: the
source ID of 0 matches itself! This causes the 'struct uvc_entity'
representing the display to be added to its chain list twice during
'uvc_scan_chain()': once via 'uvc_scan_chain_entity()' when it is
processed directly from the 'dev->entities' list and then again
immediately afterwards when trying to follow the source ID in
'uvc_scan_chain_forward()'

Add a check before adding an entity to a chain list to ensure that the
entity is not already part of a chain.

Link: https://lore.kernel.org/linux-media/CAAeHK+z+Si69jUR+N-SjN9q4O+o5KFiNManqEa-PjUta7EOb7A@mail.gmail.com/

Fixes: c0efd23292 ("V4L/DVB (8145a): USB Video Class driver")
Reported-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
[haggertk: Backport to 3.4. Adjust context]
CVE-2020-0404
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I0aadd69e56b56251cd71c6effebbab2ba78ec05c
2020-11-09 11:01:32 +01:00
Dmitry Torokhov fa28b70845 Input: add safety guards to input_set_keycode()
commit cb222aed03d798fc074be55e59d9a112338ee784 upstream.

If we happen to have a garbage in input device's keycode table with values
too big we'll end up doing clear_bit() with offset way outside of our
bitmaps, damaging other objects within an input device or even outside of
it. Let's add sanity checks to the returned old keycodes.

Reported-by: syzbot+c769968809f9359b07aa@syzkaller.appspotmail.com
Reported-by: syzbot+76f3a30e88d256644c78@syzkaller.appspotmail.com
Link: https://lore.kernel.org/r/20191207212757.GA245964@dtor-ws
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
CVE-2019-20636
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
Change-Id: I8f9a462d3fb8a9bb4494adb0e8edfac099a35263
2020-11-09 11:01:32 +01:00
132 changed files with 4370 additions and 4489 deletions
@@ -11,19 +11,17 @@
* GNU General Public License for more details.
*/
&spmi_bus {
qcom,pm8226@1 {
qcom,leds@d300 {
compatible = "qcom,leds-qpnp";
status = "okay";
reg = <0xd300 0x100>;
label = "flash";
flash-boost-supply = <&pm8226_chg_boost>;
};
};
};
&soc {
led_flash0: qcom,camera-led-flash {
cell-index = <0>;
compatible = "qcom,camera-led-flash";
qcom,flash-type = <1>;
qcom,flash-source = <&pm8226_flash0>;
qcom,torch-source = <&pm8226_torch>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c@20 {
cell-index = <20>;
compatible = "i2c-gpio";
@@ -47,14 +45,6 @@
};
};
led_flash0: qcom,camera-led-flash {
cell-index = <0>;
compatible = "qcom,camera-led-flash";
qcom,flash-type = <1>;
qcom,flash-source = <&pm8226_flash0 &pm8226_flash1>;
qcom,torch-source = <&pm8226_torch>;
};
spi@f9923000 {
eeprom0: qcom,eeprom@0 {
compatible = "qcom,eeprom";
@@ -43,8 +43,8 @@
battery,temp_check_type = <2>; /* SEC_BATTERY_TEMP_CHECK_TEMP */
battery,temp_check_count = <1>;
battery,full_check_type = <2>; /* SEC_BATTERY_FULLCHARGED_FG_CURRENT */
battery,full_check_type_2nd = <3>; /* SEC_BATTERY_FULLCHARGED_TIME */
battery,full_check_count = <2>;
battery,full_check_type_2nd = <2>; /* SEC_BATTERY_FULLCHARGED_FG_CURRENT */
battery,full_check_count = <1>;
battery,chg_gpio_full_check = <0>;
battery,chg_polarity_full_check = <1>;
@@ -52,7 +52,7 @@
SEC_BATTERY_FULL_CONDITION_NOTIMEFULL |
SEC_BATTERY_FULL_CONDITION_VCELL */
battery,full_condition_type = <13>;
battery,full_condition_soc = <95>;
battery,full_condition_soc = <93>;
battery,full_condition_vcell = <4250>;
battery,recharge_check_count = <1>;
@@ -64,17 +64,22 @@
battery,recharging_total_time = <5400>;
battery,charging_reset_time = <0>;
battery,swelling_full_check_current = <170>;
battery,swelling_high_rechg_voltage = <4150>;
battery,swelling_low_rechg_voltage = <4050>;
charger {
status = "disable"
/* Charger */
battery,charger_name = "qpnp-chg";
battery,ovp_uvlo_check_type = <3>; /* SEC_BATTERY_OVP_UVLO_CHGPOLLING */
battery,full_check_type = <2>; /* SEC_BATTERY_FULLCHARGED_FG_CURRENT */
battery,chg_float_voltage = <4350>;
battery,input_current_limit = <1000 500 500 1000 500 1000 1000 500 500 1000 650 1000 1000 500 500 300 1000 1000 300 1000 1000 500 500>;
battery,fast_charging_current = <1000 0 500 1000 500 1000 1000 500 0 1000 750 1000 1000 (-1) 500 300 1000 1000 300 1000 1000 0 0>;
battery,full_check_current_1st = <170 0 170 170 170 170 170 170 0 170 170 170 170 0 170 170 170 170 170 170 170 0 0>;
battery,full_check_current_2nd = <2400 0 2400 2400 2400 2400 2400 2400 0 2400 2400 2400 2400 0 2400 2400 2400 2400 2400 2400 2400 0 0>;
battery,full_check_current_2nd = <170 0 170 170 170 170 170 170 0 170 170 170 170 0 170 170 170 170 170 170 170 0 0>;
};
};
};
@@ -411,10 +411,6 @@
&spmi_bus {
qcom,pm8226@0 {
pm8226_chg: qcom,charger {
qcom,ext-ovp-present = <0>;
};
qcom,leds@a300 {
status = "okay";
qcom,led_mpp_4 {
@@ -642,7 +638,6 @@
};
&pm8226_chg {
qcom,charging-disabled;
qcom,battery-data = <&mtp_batterydata>;
qcom,cool-bat-decidegc = <(-50)>;
qcom,warm-bat-decidegc = <700>;
+45 -180
View File
@@ -98,10 +98,10 @@ CONFIG_CGROUP_FREEZER=y
# CONFIG_CPUSETS is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
# CONFIG_MEMCG_KMEM is not set
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
# CONFIG_HAVE_DMA_API_DEBUG is not set
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
@@ -194,7 +194,6 @@ CONFIG_SECCOMP_FILTER=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -238,17 +237,17 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_TEST is not set
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_ROW=y
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_ROW is not set
CONFIG_IOSCHED_CFQ=y
CONFIG_IOSCHED_BFQ=y
CONFIG_CGROUP_BFQIO=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_ROW is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_BFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
@@ -670,9 +669,9 @@ CONFIG_MSM_N_WAY_SMD=y
CONFIG_MSM_N_WAY_SMSM=y
CONFIG_MSM_SMP2P=y
CONFIG_MSM_SMP2P_TEST=y
CONFIG_MSM_RESET_MODEM=y
CONFIG_MSM_SMD_LOGGING=y
CONFIG_MSM_IPC_LOGGING=y
# CONFIG_MSM_RESET_MODEM is not set
# CONFIG_MSM_SMD_LOGGING is not set
# CONFIG_MSM_IPC_LOGGING is not set
CONFIG_MSM_SMD_NMEA=y
CONFIG_MSM_SMD_TTY=y
CONFIG_MSM_SMD_QMI=y
@@ -685,6 +684,7 @@ CONFIG_MSM_QMI_INTERFACE=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
# CONFIG_MSM_AVS_HW is not set
# CONFIG_MSM_HW3D is not set
@@ -766,9 +766,6 @@ CONFIG_MSM_L2_SPM=y
CONFIG_MSM_OCMEM=y
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
# CONFIG_MSM_OCMEM_DEBUG is not set
# CONFIG_MSM_OCMEM_NONSECURE is not set
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
CONFIG_MSM_OCMEM_POWER_DISABLE=y
# CONFIG_SENSORS_ADSP is not set
CONFIG_MSM_RTB=y
@@ -878,7 +875,6 @@ CONFIG_SCHED_MC=y
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_ARM_ARCH_TIMER=y
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
@@ -905,7 +901,7 @@ CONFIG_AEABI=y
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HIGHMEM=y
# CONFIG_HIGHPTE is not set
CONFIG_HW_PERF_EVENTS=y
# CONFIG_HW_PERF_EVENTS is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM=y
@@ -983,11 +979,10 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
#
# ARM CPU frequency scaling drivers
@@ -1010,7 +1005,6 @@ CONFIG_CPU_FREQ_MSM=y
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VFPv4=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
@@ -1348,7 +1342,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
@@ -1384,6 +1378,7 @@ CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
# CONFIG_NET_SCH_QFQ is not set
# CONFIG_NET_SCH_INGRESS is not set
# CONFIG_NET_SCH_PLUG is not set
#
@@ -1430,6 +1425,7 @@ CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set
# CONFIG_SOCKEV_NLMCAST is not set
#
@@ -1673,43 +1669,17 @@ CONFIG_DUALWAVE=y
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
@@ -1728,7 +1698,6 @@ CONFIG_DM_CRYPT=y
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
@@ -1901,7 +1870,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_ENABLED is not set
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
@@ -1936,14 +1905,7 @@ CONFIG_SENSORS_HALL=y
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
@@ -2062,8 +2024,8 @@ CONFIG_INPUT_GPIO=y
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
@@ -2103,7 +2065,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_MSM is not set
# CONFIG_SERIAL_MSM_HS is not set
CONFIG_SERIAL_MSM_HSL=y
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
# CONFIG_SERIAL_BCM_BT_LPM is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
@@ -2556,7 +2518,7 @@ CONFIG_IR_LIRC_CODEC=y
#
# CONFIG_MSM_CAMERA is not set
CONFIG_MSMB_CAMERA=y
CONFIG_MSMB_CAMERA_DEBUG=y
# CONFIG_MSMB_CAMERA_DEBUG is not set
CONFIG_MSM_CAMERA_SENSOR=y
CONFIG_MSM_CPP=y
CONFIG_MSM_CCI=y
@@ -2806,8 +2768,8 @@ CONFIG_RADIO_ADAPTERS=y
#
# Texas Instruments WL128x FM driver (ST based)
#
CONFIG_RADIO_IRIS=y
CONFIG_RADIO_IRIS_TRANSPORT=y
# CONFIG_RADIO_IRIS is not set
# CONFIG_RADIO_IRIS_TRANSPORT is not set
# CONFIG_JPN_DEMUX_MOD is not set
# CONFIG_TDMB is not set
# CONFIG_ISDBTMM is not set
@@ -2881,7 +2843,6 @@ CONFIG_FB_MSM=y
# CONFIG_FB_MSM_TRIPLE_BUFFER is not set
# CONFIG_FB_MSM_MDP_HW is not set
CONFIG_FB_MSM_MDSS_COMMON=y
# CONFIG_MDP_DEBUG_FS is not set
# CONFIG_FB_MSM_MDP22 is not set
# CONFIG_FB_MSM_MDP30 is not set
# CONFIG_FB_MSM_MDP31 is not set
@@ -3159,78 +3120,6 @@ CONFIG_HIDRAW=y
CONFIG_UHID=y
CONFIG_HID_GENERIC=y
#
# Special HID drivers
#
CONFIG_HID_A4TECH=y
CONFIG_HID_ACRUX=y
# CONFIG_HID_ACRUX_FF is not set
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_PRODIKEYS=y
CONFIG_HID_CYPRESS=y
CONFIG_HID_DRAGONRISE=y
# CONFIG_DRAGONRISE_FF is not set
CONFIG_HID_EMS_FF=y
CONFIG_HID_ELECOM=y
CONFIG_HID_EZKEY=y
# CONFIG_HID_HOLTEK is not set
CONFIG_HID_KEYTOUCH=y
CONFIG_HID_KYE=y
CONFIG_HID_UCLOGIC=y
CONFIG_HID_WALTOP=y
CONFIG_HID_GYRATION=y
CONFIG_HID_TWINHAN=y
CONFIG_HID_KENSINGTON=y
# CONFIG_HID_KK_UPGRADE is not set
CONFIG_HID_LCPOWER=y
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=y
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_LOGIWHEELS_FF is not set
CONFIG_HID_MAGICMOUSE=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
CONFIG_HID_PICOLCD=y
# CONFIG_HID_PICOLCD_FB is not set
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
# CONFIG_HID_PICOLCD_LCD is not set
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=y
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_SYNAPTICS_BT is not set
# CONFIG_HID_TIVO is not set
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
# CONFIG_THRUSTMASTER_FF is not set
CONFIG_HID_WACOM=y
CONFIG_HID_WACOM_POWER_SUPPLY=y
# CONFIG_HID_WIIMOTE is not set
CONFIG_HID_ZAGG=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_HID_ZYDACRON=y
# CONFIG_HID_OVR is not set
#
# USB HID support
#
@@ -3300,20 +3189,6 @@ CONFIG_USB_CCID_BRIDGE=y
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_LIBUSUAL is not set
CONFIG_USB_STORAGE_DETECT=y
@@ -3321,7 +3196,6 @@ CONFIG_USB_STORAGE_DETECT=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
@@ -3411,7 +3285,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
# CONFIG_USB_QCOM_KS_BRIDGE is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
@@ -3492,7 +3366,6 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_SUPPORT_BKOPS_MODE is not set
CONFIG_MMC_BLOCK_TEST=y
# CONFIG_MMC_CPRM is not set
#
@@ -3663,7 +3536,6 @@ CONFIG_STAGING=y
# CONFIG_ASUS_OLED is not set
# CONFIG_RTLLIB is not set
# CONFIG_R8712U is not set
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_LINE6_USB is not set
# CONFIG_USB_SERIAL_QUATECH2 is not set
@@ -3672,7 +3544,6 @@ CONFIG_STAGING=y
# CONFIG_IIO is not set
# CONFIG_INPUT_MPU6500_SELFTEST is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_USB_ENESTORAGE is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
@@ -3742,7 +3613,6 @@ CONFIG_QPNP_REVID=y
# CONFIG_IPA is not set
# CONFIG_MSM_AVTIMER is not set
# CONFIG_PFT is not set
# CONFIG_SSM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3750,11 +3620,8 @@ CONFIG_HAVE_CLK_PREPARE=y
# Hardware Spinlock drivers
#
# CONFIG_VIBETONZ is not set
# CONFIG_VIBRATOR_UPDATE is not set
# CONFIG_MOTOR_DRV_ISA1400 is not set
# CONFIG_MOTOR_DRV_DRV2603 is not set
# CONFIG_DRV2604_VIBRATOR is not set
# CONFIG_MOTOR_DRV_TSP5000 is not set
# CONFIG_MSM_VIBRATOR is not set
# CONFIG_MAX77826_VIBRATOR is not set
# CONFIG_CONFIG_HAPTIC_ISA1200 is not set
@@ -3779,12 +3646,12 @@ CONFIG_PM_DEVFREQ=y
#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
CONFIG_DEVFREQ_GOV_POWERSAVE=y
CONFIG_DEVFREQ_GOV_USERSPACE=y
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
#
# DEVFREQ Drivers
@@ -3916,7 +3783,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
@@ -3980,6 +3847,7 @@ CONFIG_SDFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:sdcard_external:s0"
CONFIG_SDFAT_SUPPORT_STLOG=y
# CONFIG_SDFAT_DEBUG is not set
CONFIG_SDFAT_STATISTICS=y
CONFIG_SDFAT_UEVENT=y
#
# Pseudo filesystems
@@ -4080,8 +3948,8 @@ CONFIG_NLS_UTF8=y
#
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4097,10 +3965,8 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
@@ -4118,9 +3984,8 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -4152,7 +4017,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
@@ -4179,6 +4044,7 @@ CONFIG_KPROBE_EVENT=y
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_HASH is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
@@ -4191,6 +4057,7 @@ CONFIG_ARM_UNWIND=y
# Samsung Debugging Feature
#
# CONFIG_SEC_DEBUG is not set
# CONFIG_SEC_FORKHANG_DEBUG is not set
# CONFIG_SEC_DEBUG_USER is not set
# CONFIG_SEC_DEBUG_IRQ_EXIT_LOG is not set
# CONFIG_SEC_DEBUG_MSG_LOG is not set
@@ -4238,7 +4105,6 @@ CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
CONFIG_SECURITY_SELINUX_DEFAULT_PERMISSIVE=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
@@ -4266,7 +4132,6 @@ CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_FIPS_INTEG_COPY_ADDRESS=0x8A008000
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
+45 -179
View File
@@ -98,10 +98,10 @@ CONFIG_CGROUP_FREEZER=y
# CONFIG_CPUSETS is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
# CONFIG_MEMCG_KMEM is not set
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
# CONFIG_HAVE_DMA_API_DEBUG is not set
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
@@ -194,7 +194,6 @@ CONFIG_SECCOMP_FILTER=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -238,17 +237,17 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_TEST is not set
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_ROW=y
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_ROW is not set
CONFIG_IOSCHED_CFQ=y
CONFIG_IOSCHED_BFQ=y
CONFIG_CGROUP_BFQIO=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_ROW is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_BFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
@@ -670,9 +669,9 @@ CONFIG_MSM_N_WAY_SMD=y
CONFIG_MSM_N_WAY_SMSM=y
CONFIG_MSM_SMP2P=y
CONFIG_MSM_SMP2P_TEST=y
CONFIG_MSM_RESET_MODEM=y
CONFIG_MSM_SMD_LOGGING=y
CONFIG_MSM_IPC_LOGGING=y
# CONFIG_MSM_RESET_MODEM is not set
# CONFIG_MSM_SMD_LOGGING is not set
# CONFIG_MSM_IPC_LOGGING is not set
CONFIG_MSM_SMD_NMEA=y
CONFIG_MSM_SMD_TTY=y
CONFIG_MSM_SMD_QMI=y
@@ -685,6 +684,7 @@ CONFIG_MSM_QMI_INTERFACE=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
# CONFIG_MSM_AVS_HW is not set
# CONFIG_MSM_HW3D is not set
@@ -766,9 +766,6 @@ CONFIG_MSM_L2_SPM=y
CONFIG_MSM_OCMEM=y
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
# CONFIG_MSM_OCMEM_DEBUG is not set
# CONFIG_MSM_OCMEM_NONSECURE is not set
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
CONFIG_MSM_OCMEM_POWER_DISABLE=y
# CONFIG_SENSORS_ADSP is not set
CONFIG_MSM_RTB=y
@@ -878,7 +875,6 @@ CONFIG_SCHED_MC=y
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_ARM_ARCH_TIMER=y
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
@@ -905,7 +901,7 @@ CONFIG_AEABI=y
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HIGHMEM=y
# CONFIG_HIGHPTE is not set
CONFIG_HW_PERF_EVENTS=y
# CONFIG_HW_PERF_EVENTS is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM=y
@@ -983,11 +979,10 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
#
# ARM CPU frequency scaling drivers
@@ -1010,7 +1005,6 @@ CONFIG_CPU_FREQ_MSM=y
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VFPv4=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
@@ -1348,7 +1342,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
@@ -1384,6 +1378,7 @@ CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
# CONFIG_NET_SCH_QFQ is not set
# CONFIG_NET_SCH_INGRESS is not set
# CONFIG_NET_SCH_PLUG is not set
#
@@ -1430,6 +1425,7 @@ CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set
# CONFIG_SOCKEV_NLMCAST is not set
#
@@ -1673,43 +1669,17 @@ CONFIG_DUALWAVE=y
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
@@ -1728,7 +1698,6 @@ CONFIG_DM_CRYPT=y
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
@@ -1901,7 +1870,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_ENABLED is not set
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
@@ -1936,14 +1905,7 @@ CONFIG_SENSORS_HALL=y
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
@@ -2062,8 +2024,8 @@ CONFIG_INPUT_GPIO=y
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
@@ -2103,7 +2065,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_MSM is not set
# CONFIG_SERIAL_MSM_HS is not set
CONFIG_SERIAL_MSM_HSL=y
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
# CONFIG_SERIAL_BCM_BT_LPM is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
@@ -2556,7 +2518,7 @@ CONFIG_IR_LIRC_CODEC=y
#
# CONFIG_MSM_CAMERA is not set
CONFIG_MSMB_CAMERA=y
CONFIG_MSMB_CAMERA_DEBUG=y
# CONFIG_MSMB_CAMERA_DEBUG is not set
CONFIG_MSM_CAMERA_SENSOR=y
CONFIG_MSM_CPP=y
CONFIG_MSM_CCI=y
@@ -2806,8 +2768,8 @@ CONFIG_RADIO_ADAPTERS=y
#
# Texas Instruments WL128x FM driver (ST based)
#
CONFIG_RADIO_IRIS=y
CONFIG_RADIO_IRIS_TRANSPORT=y
# CONFIG_RADIO_IRIS is not set
# CONFIG_RADIO_IRIS_TRANSPORT is not set
# CONFIG_JPN_DEMUX_MOD is not set
# CONFIG_TDMB is not set
# CONFIG_ISDBTMM is not set
@@ -2881,7 +2843,6 @@ CONFIG_FB_MSM=y
# CONFIG_FB_MSM_TRIPLE_BUFFER is not set
# CONFIG_FB_MSM_MDP_HW is not set
CONFIG_FB_MSM_MDSS_COMMON=y
# CONFIG_MDP_DEBUG_FS is not set
# CONFIG_FB_MSM_MDP22 is not set
# CONFIG_FB_MSM_MDP30 is not set
# CONFIG_FB_MSM_MDP31 is not set
@@ -3159,78 +3120,6 @@ CONFIG_HIDRAW=y
CONFIG_UHID=y
CONFIG_HID_GENERIC=y
#
# Special HID drivers
#
CONFIG_HID_A4TECH=y
CONFIG_HID_ACRUX=y
# CONFIG_HID_ACRUX_FF is not set
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_PRODIKEYS=y
CONFIG_HID_CYPRESS=y
CONFIG_HID_DRAGONRISE=y
# CONFIG_DRAGONRISE_FF is not set
CONFIG_HID_EMS_FF=y
CONFIG_HID_ELECOM=y
CONFIG_HID_EZKEY=y
# CONFIG_HID_HOLTEK is not set
CONFIG_HID_KEYTOUCH=y
CONFIG_HID_KYE=y
CONFIG_HID_UCLOGIC=y
CONFIG_HID_WALTOP=y
CONFIG_HID_GYRATION=y
CONFIG_HID_TWINHAN=y
CONFIG_HID_KENSINGTON=y
# CONFIG_HID_KK_UPGRADE is not set
CONFIG_HID_LCPOWER=y
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=y
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_LOGIWHEELS_FF is not set
CONFIG_HID_MAGICMOUSE=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
CONFIG_HID_PICOLCD=y
# CONFIG_HID_PICOLCD_FB is not set
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
# CONFIG_HID_PICOLCD_LCD is not set
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=y
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_SYNAPTICS_BT is not set
# CONFIG_HID_TIVO is not set
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
# CONFIG_THRUSTMASTER_FF is not set
CONFIG_HID_WACOM=y
CONFIG_HID_WACOM_POWER_SUPPLY=y
# CONFIG_HID_WIIMOTE is not set
CONFIG_HID_ZAGG=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_HID_ZYDACRON=y
# CONFIG_HID_OVR is not set
#
# USB HID support
#
@@ -3300,20 +3189,6 @@ CONFIG_USB_CCID_BRIDGE=y
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_LIBUSUAL is not set
CONFIG_USB_STORAGE_DETECT=y
@@ -3321,7 +3196,6 @@ CONFIG_USB_STORAGE_DETECT=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
@@ -3411,7 +3285,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
# CONFIG_USB_QCOM_KS_BRIDGE is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
@@ -3492,7 +3366,6 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_SUPPORT_BKOPS_MODE is not set
CONFIG_MMC_BLOCK_TEST=y
# CONFIG_MMC_CPRM is not set
#
@@ -3663,7 +3536,6 @@ CONFIG_STAGING=y
# CONFIG_ASUS_OLED is not set
# CONFIG_RTLLIB is not set
# CONFIG_R8712U is not set
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_LINE6_USB is not set
# CONFIG_USB_SERIAL_QUATECH2 is not set
@@ -3672,7 +3544,6 @@ CONFIG_STAGING=y
# CONFIG_IIO is not set
# CONFIG_INPUT_MPU6500_SELFTEST is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_USB_ENESTORAGE is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
@@ -3742,7 +3613,6 @@ CONFIG_QPNP_REVID=y
# CONFIG_IPA is not set
# CONFIG_MSM_AVTIMER is not set
# CONFIG_PFT is not set
# CONFIG_SSM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3753,8 +3623,6 @@ CONFIG_HAVE_CLK_PREPARE=y
CONFIG_VIBRATOR_UPDATE=y
# CONFIG_MOTOR_DRV_ISA1400 is not set
# CONFIG_MOTOR_DRV_DRV2603 is not set
# CONFIG_DRV2604_VIBRATOR is not set
# CONFIG_MOTOR_DRV_TSP5000 is not set
# CONFIG_MSM_VIBRATOR is not set
# CONFIG_MAX77826_VIBRATOR is not set
# CONFIG_CONFIG_HAPTIC_ISA1200 is not set
@@ -3779,12 +3647,12 @@ CONFIG_PM_DEVFREQ=y
#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
CONFIG_DEVFREQ_GOV_POWERSAVE=y
CONFIG_DEVFREQ_GOV_USERSPACE=y
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
#
# DEVFREQ Drivers
@@ -3916,7 +3784,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
@@ -3980,6 +3848,7 @@ CONFIG_SDFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:sdcard_external:s0"
CONFIG_SDFAT_SUPPORT_STLOG=y
# CONFIG_SDFAT_DEBUG is not set
CONFIG_SDFAT_STATISTICS=y
CONFIG_SDFAT_UEVENT=y
#
# Pseudo filesystems
@@ -4080,8 +3949,8 @@ CONFIG_NLS_UTF8=y
#
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4097,10 +3966,8 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
@@ -4118,9 +3985,8 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -4152,7 +4018,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
@@ -4179,6 +4045,7 @@ CONFIG_KPROBE_EVENT=y
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_HASH is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
@@ -4191,6 +4058,7 @@ CONFIG_ARM_UNWIND=y
# Samsung Debugging Feature
#
# CONFIG_SEC_DEBUG is not set
# CONFIG_SEC_FORKHANG_DEBUG is not set
# CONFIG_SEC_DEBUG_USER is not set
# CONFIG_SEC_DEBUG_IRQ_EXIT_LOG is not set
# CONFIG_SEC_DEBUG_MSG_LOG is not set
@@ -4238,7 +4106,6 @@ CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
CONFIG_SECURITY_SELINUX_DEFAULT_PERMISSIVE=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
@@ -4266,7 +4133,6 @@ CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_FIPS_INTEG_COPY_ADDRESS=0x8A008000
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
+47 -182
View File
@@ -98,10 +98,10 @@ CONFIG_CGROUP_FREEZER=y
# CONFIG_CPUSETS is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
# CONFIG_MEMCG_KMEM is not set
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
# CONFIG_HAVE_DMA_API_DEBUG is not set
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
@@ -194,7 +194,6 @@ CONFIG_SECCOMP_FILTER=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -238,17 +237,17 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_TEST is not set
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_ROW=y
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_ROW is not set
CONFIG_IOSCHED_CFQ=y
CONFIG_IOSCHED_BFQ=y
CONFIG_CGROUP_BFQIO=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_ROW is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_BFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
@@ -670,9 +669,9 @@ CONFIG_MSM_N_WAY_SMD=y
CONFIG_MSM_N_WAY_SMSM=y
CONFIG_MSM_SMP2P=y
CONFIG_MSM_SMP2P_TEST=y
CONFIG_MSM_RESET_MODEM=y
CONFIG_MSM_SMD_LOGGING=y
CONFIG_MSM_IPC_LOGGING=y
# CONFIG_MSM_RESET_MODEM is not set
# CONFIG_MSM_SMD_LOGGING is not set
# CONFIG_MSM_IPC_LOGGING is not set
CONFIG_MSM_SMD_NMEA=y
CONFIG_MSM_SMD_TTY=y
CONFIG_MSM_SMD_QMI=y
@@ -685,6 +684,7 @@ CONFIG_MSM_QMI_INTERFACE=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
# CONFIG_MSM_AVS_HW is not set
# CONFIG_MSM_HW3D is not set
@@ -766,9 +766,6 @@ CONFIG_MSM_L2_SPM=y
CONFIG_MSM_OCMEM=y
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
# CONFIG_MSM_OCMEM_DEBUG is not set
# CONFIG_MSM_OCMEM_NONSECURE is not set
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
CONFIG_MSM_OCMEM_POWER_DISABLE=y
# CONFIG_SENSORS_ADSP is not set
CONFIG_MSM_RTB=y
@@ -878,7 +875,6 @@ CONFIG_SCHED_MC=y
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_ARM_ARCH_TIMER=y
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
@@ -905,7 +901,7 @@ CONFIG_AEABI=y
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HIGHMEM=y
# CONFIG_HIGHPTE is not set
CONFIG_HW_PERF_EVENTS=y
# CONFIG_HW_PERF_EVENTS is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM=y
@@ -983,11 +979,10 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
#
# ARM CPU frequency scaling drivers
@@ -1010,7 +1005,6 @@ CONFIG_CPU_FREQ_MSM=y
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VFPv4=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
@@ -1348,7 +1342,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
@@ -1384,6 +1378,7 @@ CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
# CONFIG_NET_SCH_QFQ is not set
# CONFIG_NET_SCH_INGRESS is not set
# CONFIG_NET_SCH_PLUG is not set
#
@@ -1430,6 +1425,7 @@ CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set
# CONFIG_SOCKEV_NLMCAST is not set
#
@@ -1622,8 +1618,8 @@ CONFIG_QSEECOM=y
# CONFIG_QFP_FUSE is not set
# CONFIG_QPNP_MISC is not set
CONFIG_SEC_MISC=y
CONFIG_CHECK_SIMSLOT_COUNT=y
CONFIG_CHECK_SIMSLOT_COUNT_GPIO=66
# CONFIG_CHECK_SIMSLOT_COUNT is not set
# CONFIG_CHECK_SIMSLOT_COUNT_GPIO is not set
# CONFIG_BCM2079X_NFC_I2C is not set
# CONFIG_SEC_NFC_I2C is not set
# CONFIG_SEC_NFC is not set
@@ -1673,43 +1669,17 @@ CONFIG_DUALWAVE=y
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
@@ -1728,7 +1698,6 @@ CONFIG_DM_CRYPT=y
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
@@ -1901,7 +1870,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_ENABLED is not set
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
@@ -1936,14 +1905,7 @@ CONFIG_SENSORS_HALL=y
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
@@ -2062,8 +2024,8 @@ CONFIG_INPUT_GPIO=y
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
@@ -2103,7 +2065,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_MSM is not set
# CONFIG_SERIAL_MSM_HS is not set
CONFIG_SERIAL_MSM_HSL=y
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
# CONFIG_SERIAL_BCM_BT_LPM is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
@@ -2556,7 +2518,7 @@ CONFIG_IR_LIRC_CODEC=y
#
# CONFIG_MSM_CAMERA is not set
CONFIG_MSMB_CAMERA=y
CONFIG_MSMB_CAMERA_DEBUG=y
# CONFIG_MSMB_CAMERA_DEBUG is not set
CONFIG_MSM_CAMERA_SENSOR=y
CONFIG_MSM_CPP=y
CONFIG_MSM_CCI=y
@@ -2806,8 +2768,8 @@ CONFIG_RADIO_ADAPTERS=y
#
# Texas Instruments WL128x FM driver (ST based)
#
CONFIG_RADIO_IRIS=y
CONFIG_RADIO_IRIS_TRANSPORT=y
# CONFIG_RADIO_IRIS is not set
# CONFIG_RADIO_IRIS_TRANSPORT is not set
# CONFIG_JPN_DEMUX_MOD is not set
# CONFIG_TDMB is not set
# CONFIG_ISDBTMM is not set
@@ -2881,7 +2843,6 @@ CONFIG_FB_MSM=y
# CONFIG_FB_MSM_TRIPLE_BUFFER is not set
# CONFIG_FB_MSM_MDP_HW is not set
CONFIG_FB_MSM_MDSS_COMMON=y
# CONFIG_MDP_DEBUG_FS is not set
# CONFIG_FB_MSM_MDP22 is not set
# CONFIG_FB_MSM_MDP30 is not set
# CONFIG_FB_MSM_MDP31 is not set
@@ -3159,78 +3120,6 @@ CONFIG_HIDRAW=y
CONFIG_UHID=y
CONFIG_HID_GENERIC=y
#
# Special HID drivers
#
CONFIG_HID_A4TECH=y
CONFIG_HID_ACRUX=y
# CONFIG_HID_ACRUX_FF is not set
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_PRODIKEYS=y
CONFIG_HID_CYPRESS=y
CONFIG_HID_DRAGONRISE=y
# CONFIG_DRAGONRISE_FF is not set
CONFIG_HID_EMS_FF=y
CONFIG_HID_ELECOM=y
CONFIG_HID_EZKEY=y
# CONFIG_HID_HOLTEK is not set
CONFIG_HID_KEYTOUCH=y
CONFIG_HID_KYE=y
CONFIG_HID_UCLOGIC=y
CONFIG_HID_WALTOP=y
CONFIG_HID_GYRATION=y
CONFIG_HID_TWINHAN=y
CONFIG_HID_KENSINGTON=y
# CONFIG_HID_KK_UPGRADE is not set
CONFIG_HID_LCPOWER=y
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=y
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_LOGIWHEELS_FF is not set
CONFIG_HID_MAGICMOUSE=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
CONFIG_HID_PICOLCD=y
# CONFIG_HID_PICOLCD_FB is not set
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
# CONFIG_HID_PICOLCD_LCD is not set
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=y
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_SYNAPTICS_BT is not set
# CONFIG_HID_TIVO is not set
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
# CONFIG_THRUSTMASTER_FF is not set
CONFIG_HID_WACOM=y
CONFIG_HID_WACOM_POWER_SUPPLY=y
# CONFIG_HID_WIIMOTE is not set
CONFIG_HID_ZAGG=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_HID_ZYDACRON=y
# CONFIG_HID_OVR is not set
#
# USB HID support
#
@@ -3300,20 +3189,6 @@ CONFIG_USB_CCID_BRIDGE=y
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_LIBUSUAL is not set
CONFIG_USB_STORAGE_DETECT=y
@@ -3321,7 +3196,6 @@ CONFIG_USB_STORAGE_DETECT=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
@@ -3411,7 +3285,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
# CONFIG_USB_QCOM_KS_BRIDGE is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
@@ -3492,7 +3366,6 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_SUPPORT_BKOPS_MODE is not set
CONFIG_MMC_BLOCK_TEST=y
# CONFIG_MMC_CPRM is not set
#
@@ -3663,7 +3536,6 @@ CONFIG_STAGING=y
# CONFIG_ASUS_OLED is not set
# CONFIG_RTLLIB is not set
# CONFIG_R8712U is not set
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_LINE6_USB is not set
# CONFIG_USB_SERIAL_QUATECH2 is not set
@@ -3672,7 +3544,6 @@ CONFIG_STAGING=y
# CONFIG_IIO is not set
# CONFIG_INPUT_MPU6500_SELFTEST is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_USB_ENESTORAGE is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
@@ -3742,7 +3613,6 @@ CONFIG_QPNP_REVID=y
# CONFIG_IPA is not set
# CONFIG_MSM_AVTIMER is not set
# CONFIG_PFT is not set
# CONFIG_SSM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3750,11 +3620,8 @@ CONFIG_HAVE_CLK_PREPARE=y
# Hardware Spinlock drivers
#
# CONFIG_VIBETONZ is not set
# CONFIG_VIBRATOR_UPDATE is not set
# CONFIG_MOTOR_DRV_ISA1400 is not set
# CONFIG_MOTOR_DRV_DRV2603 is not set
# CONFIG_DRV2604_VIBRATOR is not set
# CONFIG_MOTOR_DRV_TSP5000 is not set
# CONFIG_MSM_VIBRATOR is not set
# CONFIG_MAX77826_VIBRATOR is not set
# CONFIG_CONFIG_HAPTIC_ISA1200 is not set
@@ -3779,12 +3646,12 @@ CONFIG_PM_DEVFREQ=y
#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
CONFIG_DEVFREQ_GOV_POWERSAVE=y
CONFIG_DEVFREQ_GOV_USERSPACE=y
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
#
# DEVFREQ Drivers
@@ -3915,7 +3782,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
@@ -3979,6 +3846,7 @@ CONFIG_SDFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:sdcard_external:s0"
CONFIG_SDFAT_SUPPORT_STLOG=y
# CONFIG_SDFAT_DEBUG is not set
CONFIG_SDFAT_STATISTICS=y
CONFIG_SDFAT_UEVENT=y
#
# Pseudo filesystems
@@ -4079,8 +3947,8 @@ CONFIG_NLS_UTF8=y
#
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4096,10 +3964,8 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
@@ -4117,9 +3983,8 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -4151,7 +4016,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
@@ -4178,6 +4043,7 @@ CONFIG_KPROBE_EVENT=y
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_HASH is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
@@ -4190,6 +4056,7 @@ CONFIG_ARM_UNWIND=y
# Samsung Debugging Feature
#
# CONFIG_SEC_DEBUG is not set
# CONFIG_SEC_FORKHANG_DEBUG is not set
# CONFIG_SEC_DEBUG_USER is not set
# CONFIG_SEC_DEBUG_IRQ_EXIT_LOG is not set
# CONFIG_SEC_DEBUG_MSG_LOG is not set
@@ -4237,7 +4104,6 @@ CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
CONFIG_SECURITY_SELINUX_DEFAULT_PERMISSIVE=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
@@ -4265,7 +4131,6 @@ CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_FIPS_INTEG_COPY_ADDRESS=0x8A008000
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
+45 -180
View File
@@ -98,10 +98,10 @@ CONFIG_CGROUP_FREEZER=y
# CONFIG_CPUSETS is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
# CONFIG_MEMCG_KMEM is not set
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
@@ -124,7 +124,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
# CONFIG_RD_XZ is not set
CONFIG_RD_XZ=y
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
# CONFIG_HAVE_DMA_API_DEBUG is not set
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
@@ -194,7 +194,6 @@ CONFIG_SECCOMP_FILTER=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -238,17 +237,17 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_TEST is not set
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_ROW=y
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_ROW is not set
CONFIG_IOSCHED_CFQ=y
CONFIG_IOSCHED_BFQ=y
CONFIG_CGROUP_BFQIO=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_ROW is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_BFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
@@ -670,9 +669,9 @@ CONFIG_MSM_N_WAY_SMD=y
CONFIG_MSM_N_WAY_SMSM=y
CONFIG_MSM_SMP2P=y
CONFIG_MSM_SMP2P_TEST=y
CONFIG_MSM_RESET_MODEM=y
CONFIG_MSM_SMD_LOGGING=y
CONFIG_MSM_IPC_LOGGING=y
# CONFIG_MSM_RESET_MODEM is not set
# CONFIG_MSM_SMD_LOGGING is not set
# CONFIG_MSM_IPC_LOGGING is not set
CONFIG_MSM_SMD_NMEA=y
CONFIG_MSM_SMD_TTY=y
CONFIG_MSM_SMD_QMI=y
@@ -685,6 +684,7 @@ CONFIG_MSM_QMI_INTERFACE=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
# CONFIG_MSM_AVS_HW is not set
# CONFIG_MSM_HW3D is not set
@@ -766,9 +766,6 @@ CONFIG_MSM_L2_SPM=y
CONFIG_MSM_OCMEM=y
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
# CONFIG_MSM_OCMEM_DEBUG is not set
# CONFIG_MSM_OCMEM_NONSECURE is not set
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
CONFIG_MSM_OCMEM_POWER_DISABLE=y
# CONFIG_SENSORS_ADSP is not set
CONFIG_MSM_RTB=y
@@ -878,7 +875,6 @@ CONFIG_SCHED_MC=y
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_ARM_ARCH_TIMER=y
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
@@ -905,7 +901,7 @@ CONFIG_AEABI=y
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HIGHMEM=y
# CONFIG_HIGHPTE is not set
CONFIG_HW_PERF_EVENTS=y
# CONFIG_HW_PERF_EVENTS is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM=y
@@ -983,11 +979,10 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
#
# ARM CPU frequency scaling drivers
@@ -1010,7 +1005,6 @@ CONFIG_CPU_FREQ_MSM=y
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VFPv4=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
@@ -1348,7 +1342,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
@@ -1384,6 +1378,7 @@ CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
# CONFIG_NET_SCH_QFQ is not set
# CONFIG_NET_SCH_INGRESS is not set
# CONFIG_NET_SCH_PLUG is not set
#
@@ -1430,6 +1425,7 @@ CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set
# CONFIG_SOCKEV_NLMCAST is not set
#
@@ -1673,43 +1669,17 @@ CONFIG_DUALWAVE=y
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
@@ -1728,7 +1698,6 @@ CONFIG_DM_CRYPT=y
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
@@ -1901,7 +1870,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_ENABLED is not set
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
@@ -1936,14 +1905,7 @@ CONFIG_SENSORS_HALL=y
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
@@ -2062,8 +2024,8 @@ CONFIG_INPUT_GPIO=y
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
@@ -2103,7 +2065,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_MSM is not set
# CONFIG_SERIAL_MSM_HS is not set
CONFIG_SERIAL_MSM_HSL=y
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
# CONFIG_SERIAL_BCM_BT_LPM is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
@@ -2806,8 +2768,8 @@ CONFIG_RADIO_ADAPTERS=y
#
# Texas Instruments WL128x FM driver (ST based)
#
CONFIG_RADIO_IRIS=y
CONFIG_RADIO_IRIS_TRANSPORT=y
# CONFIG_RADIO_IRIS is not set
# CONFIG_RADIO_IRIS_TRANSPORT is not set
# CONFIG_JPN_DEMUX_MOD is not set
# CONFIG_TDMB is not set
# CONFIG_ISDBTMM is not set
@@ -2881,7 +2843,6 @@ CONFIG_FB_MSM=y
# CONFIG_FB_MSM_TRIPLE_BUFFER is not set
# CONFIG_FB_MSM_MDP_HW is not set
CONFIG_FB_MSM_MDSS_COMMON=y
# CONFIG_MDP_DEBUG_FS is not set
# CONFIG_FB_MSM_MDP22 is not set
# CONFIG_FB_MSM_MDP30 is not set
# CONFIG_FB_MSM_MDP31 is not set
@@ -3160,78 +3121,6 @@ CONFIG_HIDRAW=y
CONFIG_UHID=y
CONFIG_HID_GENERIC=y
#
# Special HID drivers
#
CONFIG_HID_A4TECH=y
CONFIG_HID_ACRUX=y
# CONFIG_HID_ACRUX_FF is not set
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_PRODIKEYS=y
CONFIG_HID_CYPRESS=y
CONFIG_HID_DRAGONRISE=y
# CONFIG_DRAGONRISE_FF is not set
CONFIG_HID_EMS_FF=y
CONFIG_HID_ELECOM=y
CONFIG_HID_EZKEY=y
# CONFIG_HID_HOLTEK is not set
CONFIG_HID_KEYTOUCH=y
CONFIG_HID_KYE=y
CONFIG_HID_UCLOGIC=y
CONFIG_HID_WALTOP=y
CONFIG_HID_GYRATION=y
CONFIG_HID_TWINHAN=y
CONFIG_HID_KENSINGTON=y
# CONFIG_HID_KK_UPGRADE is not set
CONFIG_HID_LCPOWER=y
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=y
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_LOGIWHEELS_FF is not set
CONFIG_HID_MAGICMOUSE=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
CONFIG_HID_PICOLCD=y
# CONFIG_HID_PICOLCD_FB is not set
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
# CONFIG_HID_PICOLCD_LCD is not set
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=y
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_SYNAPTICS_BT is not set
# CONFIG_HID_TIVO is not set
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
# CONFIG_THRUSTMASTER_FF is not set
CONFIG_HID_WACOM=y
CONFIG_HID_WACOM_POWER_SUPPLY=y
# CONFIG_HID_WIIMOTE is not set
CONFIG_HID_ZAGG=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_HID_ZYDACRON=y
# CONFIG_HID_OVR is not set
#
# USB HID support
#
@@ -3301,20 +3190,6 @@ CONFIG_USB_CCID_BRIDGE=y
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_LIBUSUAL is not set
CONFIG_USB_STORAGE_DETECT=y
@@ -3322,7 +3197,6 @@ CONFIG_USB_STORAGE_DETECT=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
@@ -3412,7 +3286,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
# CONFIG_USB_QCOM_KS_BRIDGE is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
@@ -3493,7 +3367,6 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_SUPPORT_BKOPS_MODE is not set
CONFIG_MMC_BLOCK_TEST=y
# CONFIG_MMC_CPRM is not set
#
@@ -3664,7 +3537,6 @@ CONFIG_STAGING=y
# CONFIG_ASUS_OLED is not set
# CONFIG_RTLLIB is not set
# CONFIG_R8712U is not set
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_LINE6_USB is not set
# CONFIG_USB_SERIAL_QUATECH2 is not set
@@ -3673,7 +3545,6 @@ CONFIG_STAGING=y
# CONFIG_IIO is not set
# CONFIG_INPUT_MPU6500_SELFTEST is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_USB_ENESTORAGE is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
@@ -3743,7 +3614,6 @@ CONFIG_QPNP_REVID=y
# CONFIG_IPA is not set
# CONFIG_MSM_AVTIMER is not set
# CONFIG_PFT is not set
# CONFIG_SSM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3751,11 +3621,8 @@ CONFIG_HAVE_CLK_PREPARE=y
# Hardware Spinlock drivers
#
# CONFIG_VIBETONZ is not set
# CONFIG_VIBRATOR_UPDATE is not set
# CONFIG_MOTOR_DRV_ISA1400 is not set
# CONFIG_MOTOR_DRV_DRV2603 is not set
# CONFIG_DRV2604_VIBRATOR is not set
# CONFIG_MOTOR_DRV_TSP5000 is not set
CONFIG_MSM_VIBRATOR=y
# CONFIG_MAX77826_VIBRATOR is not set
# CONFIG_CONFIG_HAPTIC_ISA1200 is not set
@@ -3780,12 +3647,12 @@ CONFIG_PM_DEVFREQ=y
#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
CONFIG_DEVFREQ_GOV_POWERSAVE=y
CONFIG_DEVFREQ_GOV_USERSPACE=y
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
#
# DEVFREQ Drivers
@@ -3918,7 +3785,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
@@ -3982,6 +3849,7 @@ CONFIG_SDFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:sdcard_external:s0"
CONFIG_SDFAT_SUPPORT_STLOG=y
# CONFIG_SDFAT_DEBUG is not set
CONFIG_SDFAT_STATISTICS=y
CONFIG_SDFAT_UEVENT=y
#
# Pseudo filesystems
@@ -4082,8 +3950,8 @@ CONFIG_NLS_UTF8=y
#
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4099,10 +3967,8 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
@@ -4120,9 +3986,8 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -4154,7 +4019,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
@@ -4181,6 +4046,7 @@ CONFIG_KPROBE_EVENT=y
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_HASH is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
@@ -4193,6 +4059,7 @@ CONFIG_ARM_UNWIND=y
# Samsung Debugging Feature
#
# CONFIG_SEC_DEBUG is not set
# CONFIG_SEC_FORKHANG_DEBUG is not set
# CONFIG_SEC_DEBUG_USER is not set
# CONFIG_SEC_DEBUG_IRQ_EXIT_LOG is not set
# CONFIG_SEC_DEBUG_MSG_LOG is not set
@@ -4240,7 +4107,6 @@ CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
CONFIG_SECURITY_SELINUX_DEFAULT_PERMISSIVE=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
@@ -4268,7 +4134,6 @@ CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_FIPS_INTEG_COPY_ADDRESS=0x8A008000
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
+45 -180
View File
@@ -98,10 +98,10 @@ CONFIG_CGROUP_FREEZER=y
# CONFIG_CPUSETS is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
# CONFIG_MEMCG_KMEM is not set
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
@@ -124,7 +124,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
# CONFIG_RD_XZ is not set
CONFIG_RD_XZ=y
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
# CONFIG_HAVE_DMA_API_DEBUG is not set
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
@@ -194,7 +194,6 @@ CONFIG_SECCOMP_FILTER=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -238,17 +237,17 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_TEST is not set
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_ROW=y
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_ROW is not set
CONFIG_IOSCHED_CFQ=y
CONFIG_IOSCHED_BFQ=y
CONFIG_CGROUP_BFQIO=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_ROW is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_BFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
@@ -670,9 +669,9 @@ CONFIG_MSM_N_WAY_SMD=y
CONFIG_MSM_N_WAY_SMSM=y
CONFIG_MSM_SMP2P=y
CONFIG_MSM_SMP2P_TEST=y
CONFIG_MSM_RESET_MODEM=y
CONFIG_MSM_SMD_LOGGING=y
CONFIG_MSM_IPC_LOGGING=y
# CONFIG_MSM_RESET_MODEM is not set
# CONFIG_MSM_SMD_LOGGING is not set
# CONFIG_MSM_IPC_LOGGING is not set
CONFIG_MSM_SMD_NMEA=y
CONFIG_MSM_SMD_TTY=y
CONFIG_MSM_SMD_QMI=y
@@ -685,6 +684,7 @@ CONFIG_MSM_QMI_INTERFACE=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
# CONFIG_MSM_AVS_HW is not set
# CONFIG_MSM_HW3D is not set
@@ -766,9 +766,6 @@ CONFIG_MSM_L2_SPM=y
CONFIG_MSM_OCMEM=y
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
# CONFIG_MSM_OCMEM_DEBUG is not set
# CONFIG_MSM_OCMEM_NONSECURE is not set
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
CONFIG_MSM_OCMEM_POWER_DISABLE=y
# CONFIG_SENSORS_ADSP is not set
CONFIG_MSM_RTB=y
@@ -878,7 +875,6 @@ CONFIG_SCHED_MC=y
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_ARM_ARCH_TIMER=y
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
@@ -905,7 +901,7 @@ CONFIG_AEABI=y
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HIGHMEM=y
# CONFIG_HIGHPTE is not set
CONFIG_HW_PERF_EVENTS=y
# CONFIG_HW_PERF_EVENTS is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM=y
@@ -983,11 +979,10 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
#
# ARM CPU frequency scaling drivers
@@ -1010,7 +1005,6 @@ CONFIG_CPU_FREQ_MSM=y
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VFPv4=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
@@ -1348,7 +1342,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
@@ -1384,6 +1378,7 @@ CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
# CONFIG_NET_SCH_QFQ is not set
# CONFIG_NET_SCH_INGRESS is not set
# CONFIG_NET_SCH_PLUG is not set
#
@@ -1430,6 +1425,7 @@ CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set
# CONFIG_SOCKEV_NLMCAST is not set
#
@@ -1673,43 +1669,17 @@ CONFIG_DUALWAVE=y
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
@@ -1728,7 +1698,6 @@ CONFIG_DM_CRYPT=y
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
@@ -1901,7 +1870,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_ENABLED is not set
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
@@ -1936,14 +1905,7 @@ CONFIG_SENSORS_HALL=y
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
@@ -2062,8 +2024,8 @@ CONFIG_INPUT_GPIO=y
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
@@ -2103,7 +2065,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_MSM is not set
# CONFIG_SERIAL_MSM_HS is not set
CONFIG_SERIAL_MSM_HSL=y
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
# CONFIG_SERIAL_BCM_BT_LPM is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
@@ -2806,8 +2768,8 @@ CONFIG_RADIO_ADAPTERS=y
#
# Texas Instruments WL128x FM driver (ST based)
#
CONFIG_RADIO_IRIS=y
CONFIG_RADIO_IRIS_TRANSPORT=y
# CONFIG_RADIO_IRIS is not set
# CONFIG_RADIO_IRIS_TRANSPORT is not set
# CONFIG_JPN_DEMUX_MOD is not set
# CONFIG_TDMB is not set
# CONFIG_ISDBTMM is not set
@@ -2881,7 +2843,6 @@ CONFIG_FB_MSM=y
# CONFIG_FB_MSM_TRIPLE_BUFFER is not set
# CONFIG_FB_MSM_MDP_HW is not set
CONFIG_FB_MSM_MDSS_COMMON=y
# CONFIG_MDP_DEBUG_FS is not set
# CONFIG_FB_MSM_MDP22 is not set
# CONFIG_FB_MSM_MDP30 is not set
# CONFIG_FB_MSM_MDP31 is not set
@@ -3160,78 +3121,6 @@ CONFIG_HIDRAW=y
CONFIG_UHID=y
CONFIG_HID_GENERIC=y
#
# Special HID drivers
#
CONFIG_HID_A4TECH=y
CONFIG_HID_ACRUX=y
# CONFIG_HID_ACRUX_FF is not set
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_PRODIKEYS=y
CONFIG_HID_CYPRESS=y
CONFIG_HID_DRAGONRISE=y
# CONFIG_DRAGONRISE_FF is not set
CONFIG_HID_EMS_FF=y
CONFIG_HID_ELECOM=y
CONFIG_HID_EZKEY=y
# CONFIG_HID_HOLTEK is not set
CONFIG_HID_KEYTOUCH=y
CONFIG_HID_KYE=y
CONFIG_HID_UCLOGIC=y
CONFIG_HID_WALTOP=y
CONFIG_HID_GYRATION=y
CONFIG_HID_TWINHAN=y
CONFIG_HID_KENSINGTON=y
# CONFIG_HID_KK_UPGRADE is not set
CONFIG_HID_LCPOWER=y
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=y
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_LOGIWHEELS_FF is not set
CONFIG_HID_MAGICMOUSE=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
CONFIG_HID_PICOLCD=y
# CONFIG_HID_PICOLCD_FB is not set
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
# CONFIG_HID_PICOLCD_LCD is not set
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=y
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_SYNAPTICS_BT is not set
# CONFIG_HID_TIVO is not set
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
# CONFIG_THRUSTMASTER_FF is not set
CONFIG_HID_WACOM=y
CONFIG_HID_WACOM_POWER_SUPPLY=y
# CONFIG_HID_WIIMOTE is not set
CONFIG_HID_ZAGG=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_HID_ZYDACRON=y
# CONFIG_HID_OVR is not set
#
# USB HID support
#
@@ -3301,20 +3190,6 @@ CONFIG_USB_CCID_BRIDGE=y
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_LIBUSUAL is not set
CONFIG_USB_STORAGE_DETECT=y
@@ -3322,7 +3197,6 @@ CONFIG_USB_STORAGE_DETECT=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
@@ -3412,7 +3286,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
# CONFIG_USB_QCOM_KS_BRIDGE is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
@@ -3493,7 +3367,6 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_SUPPORT_BKOPS_MODE is not set
CONFIG_MMC_BLOCK_TEST=y
# CONFIG_MMC_CPRM is not set
#
@@ -3664,7 +3537,6 @@ CONFIG_STAGING=y
# CONFIG_ASUS_OLED is not set
# CONFIG_RTLLIB is not set
# CONFIG_R8712U is not set
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_LINE6_USB is not set
# CONFIG_USB_SERIAL_QUATECH2 is not set
@@ -3673,7 +3545,6 @@ CONFIG_STAGING=y
# CONFIG_IIO is not set
# CONFIG_INPUT_MPU6500_SELFTEST is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_USB_ENESTORAGE is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
@@ -3743,7 +3614,6 @@ CONFIG_QPNP_REVID=y
# CONFIG_IPA is not set
# CONFIG_MSM_AVTIMER is not set
# CONFIG_PFT is not set
# CONFIG_SSM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3751,11 +3621,8 @@ CONFIG_HAVE_CLK_PREPARE=y
# Hardware Spinlock drivers
#
# CONFIG_VIBETONZ is not set
# CONFIG_VIBRATOR_UPDATE is not set
# CONFIG_MOTOR_DRV_ISA1400 is not set
# CONFIG_MOTOR_DRV_DRV2603 is not set
# CONFIG_DRV2604_VIBRATOR is not set
# CONFIG_MOTOR_DRV_TSP5000 is not set
CONFIG_MSM_VIBRATOR=y
# CONFIG_MAX77826_VIBRATOR is not set
# CONFIG_CONFIG_HAPTIC_ISA1200 is not set
@@ -3780,12 +3647,12 @@ CONFIG_PM_DEVFREQ=y
#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
CONFIG_DEVFREQ_GOV_POWERSAVE=y
CONFIG_DEVFREQ_GOV_USERSPACE=y
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
#
# DEVFREQ Drivers
@@ -3918,7 +3785,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
@@ -3982,6 +3849,7 @@ CONFIG_SDFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:sdcard_external:s0"
CONFIG_SDFAT_SUPPORT_STLOG=y
# CONFIG_SDFAT_DEBUG is not set
CONFIG_SDFAT_STATISTICS=y
CONFIG_SDFAT_UEVENT=y
#
# Pseudo filesystems
@@ -4082,8 +3950,8 @@ CONFIG_NLS_UTF8=y
#
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4099,10 +3967,8 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
@@ -4120,9 +3986,8 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -4154,7 +4019,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
@@ -4181,6 +4046,7 @@ CONFIG_KPROBE_EVENT=y
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_HASH is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
@@ -4193,6 +4059,7 @@ CONFIG_ARM_UNWIND=y
# Samsung Debugging Feature
#
# CONFIG_SEC_DEBUG is not set
# CONFIG_SEC_FORKHANG_DEBUG is not set
# CONFIG_SEC_DEBUG_USER is not set
# CONFIG_SEC_DEBUG_IRQ_EXIT_LOG is not set
# CONFIG_SEC_DEBUG_MSG_LOG is not set
@@ -4240,7 +4107,6 @@ CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
CONFIG_SECURITY_SELINUX_DEFAULT_PERMISSIVE=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
@@ -4268,7 +4134,6 @@ CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_FIPS_INTEG_COPY_ADDRESS=0x8A008000
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
+49 -183
View File
@@ -98,10 +98,10 @@ CONFIG_CGROUP_FREEZER=y
# CONFIG_CPUSETS is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
# CONFIG_MEMCG_KMEM is not set
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
@@ -124,7 +124,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
# CONFIG_RD_XZ is not set
CONFIG_RD_XZ=y
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
# CONFIG_HAVE_DMA_API_DEBUG is not set
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
@@ -194,7 +194,6 @@ CONFIG_SECCOMP_FILTER=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -238,17 +237,17 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_TEST is not set
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_ROW=y
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_ROW is not set
CONFIG_IOSCHED_CFQ=y
CONFIG_IOSCHED_BFQ=y
CONFIG_CGROUP_BFQIO=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_ROW is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_BFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
@@ -670,9 +669,9 @@ CONFIG_MSM_N_WAY_SMD=y
CONFIG_MSM_N_WAY_SMSM=y
CONFIG_MSM_SMP2P=y
CONFIG_MSM_SMP2P_TEST=y
CONFIG_MSM_RESET_MODEM=y
CONFIG_MSM_SMD_LOGGING=y
CONFIG_MSM_IPC_LOGGING=y
# CONFIG_MSM_RESET_MODEM is not set
# CONFIG_MSM_SMD_LOGGING is not set
# CONFIG_MSM_IPC_LOGGING is not set
CONFIG_MSM_SMD_NMEA=y
CONFIG_MSM_SMD_TTY=y
CONFIG_MSM_SMD_QMI=y
@@ -685,6 +684,7 @@ CONFIG_MSM_QMI_INTERFACE=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
# CONFIG_MSM_AVS_HW is not set
# CONFIG_MSM_HW3D is not set
@@ -766,9 +766,6 @@ CONFIG_MSM_L2_SPM=y
CONFIG_MSM_OCMEM=y
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
# CONFIG_MSM_OCMEM_DEBUG is not set
# CONFIG_MSM_OCMEM_NONSECURE is not set
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
CONFIG_MSM_OCMEM_POWER_DISABLE=y
# CONFIG_SENSORS_ADSP is not set
CONFIG_MSM_RTB=y
@@ -878,7 +875,6 @@ CONFIG_SCHED_MC=y
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_ARM_ARCH_TIMER=y
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
@@ -905,7 +901,7 @@ CONFIG_AEABI=y
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HIGHMEM=y
# CONFIG_HIGHPTE is not set
CONFIG_HW_PERF_EVENTS=y
# CONFIG_HW_PERF_EVENTS is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM=y
@@ -983,11 +979,10 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
#
# ARM CPU frequency scaling drivers
@@ -1010,7 +1005,6 @@ CONFIG_CPU_FREQ_MSM=y
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VFPv4=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
@@ -1348,7 +1342,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
@@ -1384,6 +1378,7 @@ CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
# CONFIG_NET_SCH_QFQ is not set
# CONFIG_NET_SCH_INGRESS is not set
# CONFIG_NET_SCH_PLUG is not set
#
@@ -1430,6 +1425,7 @@ CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set
# CONFIG_SOCKEV_NLMCAST is not set
#
@@ -1673,43 +1669,17 @@ CONFIG_DUALWAVE=y
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
@@ -1728,7 +1698,6 @@ CONFIG_DM_CRYPT=y
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
@@ -1901,7 +1870,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_ENABLED is not set
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
@@ -1936,14 +1905,7 @@ CONFIG_SENSORS_HALL=y
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
@@ -2062,8 +2024,8 @@ CONFIG_INPUT_GPIO=y
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
@@ -2103,7 +2065,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_MSM is not set
# CONFIG_SERIAL_MSM_HS is not set
CONFIG_SERIAL_MSM_HSL=y
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
# CONFIG_SERIAL_BCM_BT_LPM is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
@@ -2304,9 +2266,9 @@ CONFIG_POWER_SUPPLY=y
# CONFIG_QPNP_CHARGER is not set
# CONFIG_QPNP_SEC_CHARGER is not set
# CONFIG_LTC4088_CHARGER is not set
CONFIG_BATTERY_BCL=y
# CONFIG_BATTERY_BCL is not set
# CONFIG_CHARGER_SMB347 is not set
CONFIG_QPNP_BMS=y
# CONFIG_QPNP_BMS is not set
CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -2806,8 +2768,8 @@ CONFIG_RADIO_ADAPTERS=y
#
# Texas Instruments WL128x FM driver (ST based)
#
CONFIG_RADIO_IRIS=y
CONFIG_RADIO_IRIS_TRANSPORT=y
# CONFIG_RADIO_IRIS is not set
# CONFIG_RADIO_IRIS_TRANSPORT is not set
# CONFIG_JPN_DEMUX_MOD is not set
# CONFIG_TDMB is not set
# CONFIG_ISDBTMM is not set
@@ -2881,7 +2843,6 @@ CONFIG_FB_MSM=y
# CONFIG_FB_MSM_TRIPLE_BUFFER is not set
# CONFIG_FB_MSM_MDP_HW is not set
CONFIG_FB_MSM_MDSS_COMMON=y
# CONFIG_MDP_DEBUG_FS is not set
# CONFIG_FB_MSM_MDP22 is not set
# CONFIG_FB_MSM_MDP30 is not set
# CONFIG_FB_MSM_MDP31 is not set
@@ -3160,78 +3121,6 @@ CONFIG_HIDRAW=y
CONFIG_UHID=y
CONFIG_HID_GENERIC=y
#
# Special HID drivers
#
CONFIG_HID_A4TECH=y
CONFIG_HID_ACRUX=y
# CONFIG_HID_ACRUX_FF is not set
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_PRODIKEYS=y
CONFIG_HID_CYPRESS=y
CONFIG_HID_DRAGONRISE=y
# CONFIG_DRAGONRISE_FF is not set
CONFIG_HID_EMS_FF=y
CONFIG_HID_ELECOM=y
CONFIG_HID_EZKEY=y
# CONFIG_HID_HOLTEK is not set
CONFIG_HID_KEYTOUCH=y
CONFIG_HID_KYE=y
CONFIG_HID_UCLOGIC=y
CONFIG_HID_WALTOP=y
CONFIG_HID_GYRATION=y
CONFIG_HID_TWINHAN=y
CONFIG_HID_KENSINGTON=y
# CONFIG_HID_KK_UPGRADE is not set
CONFIG_HID_LCPOWER=y
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=y
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_LOGIWHEELS_FF is not set
CONFIG_HID_MAGICMOUSE=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
CONFIG_HID_PICOLCD=y
# CONFIG_HID_PICOLCD_FB is not set
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
# CONFIG_HID_PICOLCD_LCD is not set
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=y
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_SYNAPTICS_BT is not set
# CONFIG_HID_TIVO is not set
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
# CONFIG_THRUSTMASTER_FF is not set
CONFIG_HID_WACOM=y
CONFIG_HID_WACOM_POWER_SUPPLY=y
# CONFIG_HID_WIIMOTE is not set
CONFIG_HID_ZAGG=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_HID_ZYDACRON=y
# CONFIG_HID_OVR is not set
#
# USB HID support
#
@@ -3301,20 +3190,6 @@ CONFIG_USB_CCID_BRIDGE=y
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_LIBUSUAL is not set
CONFIG_USB_STORAGE_DETECT=y
@@ -3322,7 +3197,6 @@ CONFIG_USB_STORAGE_DETECT=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
@@ -3412,7 +3286,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
# CONFIG_USB_QCOM_KS_BRIDGE is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
@@ -3493,7 +3367,6 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_SUPPORT_BKOPS_MODE is not set
CONFIG_MMC_BLOCK_TEST=y
# CONFIG_MMC_CPRM is not set
#
@@ -3664,7 +3537,6 @@ CONFIG_STAGING=y
# CONFIG_ASUS_OLED is not set
# CONFIG_RTLLIB is not set
# CONFIG_R8712U is not set
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_LINE6_USB is not set
# CONFIG_USB_SERIAL_QUATECH2 is not set
@@ -3673,7 +3545,6 @@ CONFIG_STAGING=y
# CONFIG_IIO is not set
# CONFIG_INPUT_MPU6500_SELFTEST is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_USB_ENESTORAGE is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
@@ -3743,7 +3614,6 @@ CONFIG_QPNP_REVID=y
# CONFIG_IPA is not set
# CONFIG_MSM_AVTIMER is not set
# CONFIG_PFT is not set
# CONFIG_SSM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3751,11 +3621,8 @@ CONFIG_HAVE_CLK_PREPARE=y
# Hardware Spinlock drivers
#
# CONFIG_VIBETONZ is not set
# CONFIG_VIBRATOR_UPDATE is not set
# CONFIG_MOTOR_DRV_ISA1400 is not set
# CONFIG_MOTOR_DRV_DRV2603 is not set
# CONFIG_DRV2604_VIBRATOR is not set
# CONFIG_MOTOR_DRV_TSP5000 is not set
CONFIG_MSM_VIBRATOR=y
# CONFIG_MAX77826_VIBRATOR is not set
# CONFIG_CONFIG_HAPTIC_ISA1200 is not set
@@ -3780,12 +3647,12 @@ CONFIG_PM_DEVFREQ=y
#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
CONFIG_DEVFREQ_GOV_POWERSAVE=y
CONFIG_DEVFREQ_GOV_USERSPACE=y
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
#
# DEVFREQ Drivers
@@ -3800,7 +3667,8 @@ CONFIG_BATTERY_SAMSUNG_DATA_FILE=""
# CONFIG_FUELGAUGE_DUMMY is not set
# CONFIG_FUELGAUGE_MAX17042 is not set
# CONFIG_FUELGAUGE_MAX17048 is not set
# CONFIG_FUELGAUGE_MAX17050 is not set
CONFIG_FUELGAUGE_MAX17050=y
CONFIG_FUELGAUGE_MAX17050_COULOMB_COUNTING=y
# CONFIG_FUELGAUGE_MAX77823 is not set
# CONFIG_CHARGER_DUMMY is not set
# CONFIG_CHARGER_SMB328 is not set
@@ -3918,7 +3786,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
@@ -3982,6 +3850,7 @@ CONFIG_SDFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:sdcard_external:s0"
CONFIG_SDFAT_SUPPORT_STLOG=y
# CONFIG_SDFAT_DEBUG is not set
CONFIG_SDFAT_STATISTICS=y
CONFIG_SDFAT_UEVENT=y
#
# Pseudo filesystems
@@ -4082,8 +3951,8 @@ CONFIG_NLS_UTF8=y
#
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4099,10 +3968,8 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
@@ -4120,9 +3987,8 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -4154,7 +4020,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
@@ -4181,6 +4047,7 @@ CONFIG_KPROBE_EVENT=y
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_HASH is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
@@ -4193,6 +4060,7 @@ CONFIG_ARM_UNWIND=y
# Samsung Debugging Feature
#
# CONFIG_SEC_DEBUG is not set
# CONFIG_SEC_FORKHANG_DEBUG is not set
# CONFIG_SEC_DEBUG_USER is not set
# CONFIG_SEC_DEBUG_IRQ_EXIT_LOG is not set
# CONFIG_SEC_DEBUG_MSG_LOG is not set
@@ -4240,7 +4108,6 @@ CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
CONFIG_SECURITY_SELINUX_DEFAULT_PERMISSIVE=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
@@ -4268,7 +4135,6 @@ CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_FIPS_INTEG_COPY_ADDRESS=0x8A008000
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
+47 -182
View File
@@ -98,10 +98,10 @@ CONFIG_CGROUP_FREEZER=y
# CONFIG_CPUSETS is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
# CONFIG_MEMCG_KMEM is not set
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
@@ -124,7 +124,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
# CONFIG_RD_XZ is not set
CONFIG_RD_XZ=y
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
# CONFIG_HAVE_DMA_API_DEBUG is not set
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
@@ -194,7 +194,6 @@ CONFIG_SECCOMP_FILTER=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -238,17 +237,17 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_TEST is not set
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_ROW=y
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_ROW is not set
CONFIG_IOSCHED_CFQ=y
CONFIG_IOSCHED_BFQ=y
CONFIG_CGROUP_BFQIO=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_ROW is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_BFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
@@ -670,9 +669,9 @@ CONFIG_MSM_N_WAY_SMD=y
CONFIG_MSM_N_WAY_SMSM=y
CONFIG_MSM_SMP2P=y
CONFIG_MSM_SMP2P_TEST=y
CONFIG_MSM_RESET_MODEM=y
CONFIG_MSM_SMD_LOGGING=y
CONFIG_MSM_IPC_LOGGING=y
# CONFIG_MSM_RESET_MODEM is not set
# CONFIG_MSM_SMD_LOGGING is not set
# CONFIG_MSM_IPC_LOGGING is not set
CONFIG_MSM_SMD_NMEA=y
CONFIG_MSM_SMD_TTY=y
CONFIG_MSM_SMD_QMI=y
@@ -685,6 +684,7 @@ CONFIG_MSM_QMI_INTERFACE=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
# CONFIG_MSM_AVS_HW is not set
# CONFIG_MSM_HW3D is not set
@@ -766,9 +766,6 @@ CONFIG_MSM_L2_SPM=y
CONFIG_MSM_OCMEM=y
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
# CONFIG_MSM_OCMEM_DEBUG is not set
# CONFIG_MSM_OCMEM_NONSECURE is not set
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
CONFIG_MSM_OCMEM_POWER_DISABLE=y
# CONFIG_SENSORS_ADSP is not set
CONFIG_MSM_RTB=y
@@ -878,7 +875,6 @@ CONFIG_SCHED_MC=y
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_ARM_ARCH_TIMER=y
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
@@ -905,7 +901,7 @@ CONFIG_AEABI=y
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HIGHMEM=y
# CONFIG_HIGHPTE is not set
CONFIG_HW_PERF_EVENTS=y
# CONFIG_HW_PERF_EVENTS is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM=y
@@ -983,11 +979,10 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
#
# ARM CPU frequency scaling drivers
@@ -1010,7 +1005,6 @@ CONFIG_CPU_FREQ_MSM=y
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VFPv4=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
@@ -1348,7 +1342,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
@@ -1384,6 +1378,7 @@ CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
# CONFIG_NET_SCH_QFQ is not set
# CONFIG_NET_SCH_INGRESS is not set
# CONFIG_NET_SCH_PLUG is not set
#
@@ -1430,6 +1425,7 @@ CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set
# CONFIG_SOCKEV_NLMCAST is not set
#
@@ -1622,8 +1618,8 @@ CONFIG_QSEECOM=y
# CONFIG_QFP_FUSE is not set
# CONFIG_QPNP_MISC is not set
CONFIG_SEC_MISC=y
CONFIG_CHECK_SIMSLOT_COUNT=y
CONFIG_CHECK_SIMSLOT_COUNT_GPIO=66
# CONFIG_CHECK_SIMSLOT_COUNT is not set
# CONFIG_CHECK_SIMSLOT_COUNT_GPIO is not set
# CONFIG_BCM2079X_NFC_I2C is not set
# CONFIG_SEC_NFC_I2C is not set
# CONFIG_SEC_NFC is not set
@@ -1673,43 +1669,17 @@ CONFIG_DUALWAVE=y
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
@@ -1728,7 +1698,6 @@ CONFIG_DM_CRYPT=y
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
@@ -1901,7 +1870,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_ENABLED is not set
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
@@ -1936,14 +1905,7 @@ CONFIG_SENSORS_HALL=y
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
@@ -2062,8 +2024,8 @@ CONFIG_INPUT_GPIO=y
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
@@ -2103,7 +2065,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_MSM is not set
# CONFIG_SERIAL_MSM_HS is not set
CONFIG_SERIAL_MSM_HSL=y
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
# CONFIG_SERIAL_BCM_BT_LPM is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
@@ -2806,8 +2768,8 @@ CONFIG_RADIO_ADAPTERS=y
#
# Texas Instruments WL128x FM driver (ST based)
#
CONFIG_RADIO_IRIS=y
CONFIG_RADIO_IRIS_TRANSPORT=y
# CONFIG_RADIO_IRIS is not set
# CONFIG_RADIO_IRIS_TRANSPORT is not set
# CONFIG_JPN_DEMUX_MOD is not set
# CONFIG_TDMB is not set
# CONFIG_ISDBTMM is not set
@@ -2881,7 +2843,6 @@ CONFIG_FB_MSM=y
# CONFIG_FB_MSM_TRIPLE_BUFFER is not set
# CONFIG_FB_MSM_MDP_HW is not set
CONFIG_FB_MSM_MDSS_COMMON=y
# CONFIG_MDP_DEBUG_FS is not set
# CONFIG_FB_MSM_MDP22 is not set
# CONFIG_FB_MSM_MDP30 is not set
# CONFIG_FB_MSM_MDP31 is not set
@@ -3160,78 +3121,6 @@ CONFIG_HIDRAW=y
CONFIG_UHID=y
CONFIG_HID_GENERIC=y
#
# Special HID drivers
#
CONFIG_HID_A4TECH=y
CONFIG_HID_ACRUX=y
# CONFIG_HID_ACRUX_FF is not set
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_PRODIKEYS=y
CONFIG_HID_CYPRESS=y
CONFIG_HID_DRAGONRISE=y
# CONFIG_DRAGONRISE_FF is not set
CONFIG_HID_EMS_FF=y
CONFIG_HID_ELECOM=y
CONFIG_HID_EZKEY=y
# CONFIG_HID_HOLTEK is not set
CONFIG_HID_KEYTOUCH=y
CONFIG_HID_KYE=y
CONFIG_HID_UCLOGIC=y
CONFIG_HID_WALTOP=y
CONFIG_HID_GYRATION=y
CONFIG_HID_TWINHAN=y
CONFIG_HID_KENSINGTON=y
# CONFIG_HID_KK_UPGRADE is not set
CONFIG_HID_LCPOWER=y
CONFIG_HID_LOGITECH=y
CONFIG_HID_LOGITECH_DJ=y
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_LOGIWHEELS_FF is not set
CONFIG_HID_MAGICMOUSE=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
CONFIG_HID_PICOLCD=y
# CONFIG_HID_PICOLCD_FB is not set
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
# CONFIG_HID_PICOLCD_LCD is not set
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=y
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_SYNAPTICS_BT is not set
# CONFIG_HID_TIVO is not set
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
# CONFIG_THRUSTMASTER_FF is not set
CONFIG_HID_WACOM=y
CONFIG_HID_WACOM_POWER_SUPPLY=y
# CONFIG_HID_WIIMOTE is not set
CONFIG_HID_ZAGG=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_HID_ZYDACRON=y
# CONFIG_HID_OVR is not set
#
# USB HID support
#
@@ -3301,20 +3190,6 @@ CONFIG_USB_CCID_BRIDGE=y
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_LIBUSUAL is not set
CONFIG_USB_STORAGE_DETECT=y
@@ -3322,7 +3197,6 @@ CONFIG_USB_STORAGE_DETECT=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
@@ -3412,7 +3286,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
# CONFIG_USB_QCOM_KS_BRIDGE is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
@@ -3493,7 +3367,6 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_SUPPORT_BKOPS_MODE is not set
CONFIG_MMC_BLOCK_TEST=y
# CONFIG_MMC_CPRM is not set
#
@@ -3664,7 +3537,6 @@ CONFIG_STAGING=y
# CONFIG_ASUS_OLED is not set
# CONFIG_RTLLIB is not set
# CONFIG_R8712U is not set
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_LINE6_USB is not set
# CONFIG_USB_SERIAL_QUATECH2 is not set
@@ -3673,7 +3545,6 @@ CONFIG_STAGING=y
# CONFIG_IIO is not set
# CONFIG_INPUT_MPU6500_SELFTEST is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_USB_ENESTORAGE is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
@@ -3743,7 +3614,6 @@ CONFIG_QPNP_REVID=y
# CONFIG_IPA is not set
# CONFIG_MSM_AVTIMER is not set
# CONFIG_PFT is not set
# CONFIG_SSM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3751,11 +3621,8 @@ CONFIG_HAVE_CLK_PREPARE=y
# Hardware Spinlock drivers
#
# CONFIG_VIBETONZ is not set
# CONFIG_VIBRATOR_UPDATE is not set
# CONFIG_MOTOR_DRV_ISA1400 is not set
# CONFIG_MOTOR_DRV_DRV2603 is not set
# CONFIG_DRV2604_VIBRATOR is not set
# CONFIG_MOTOR_DRV_TSP5000 is not set
# CONFIG_MSM_VIBRATOR is not set
# CONFIG_MAX77826_VIBRATOR is not set
# CONFIG_CONFIG_HAPTIC_ISA1200 is not set
@@ -3780,12 +3647,12 @@ CONFIG_PM_DEVFREQ=y
#
# DEVFREQ Governors
#
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
CONFIG_DEVFREQ_GOV_POWERSAVE=y
CONFIG_DEVFREQ_GOV_USERSPACE=y
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
#
# DEVFREQ Drivers
@@ -3916,7 +3783,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
@@ -3980,6 +3847,7 @@ CONFIG_SDFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:sdcard_external:s0"
CONFIG_SDFAT_SUPPORT_STLOG=y
# CONFIG_SDFAT_DEBUG is not set
CONFIG_SDFAT_STATISTICS=y
CONFIG_SDFAT_UEVENT=y
#
# Pseudo filesystems
@@ -4080,8 +3948,8 @@ CONFIG_NLS_UTF8=y
#
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4097,10 +3965,8 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
@@ -4118,9 +3984,8 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -4152,7 +4017,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
@@ -4180,6 +4045,7 @@ CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_STRICT_DEVMEM is not set
# CONFIG_TEST_HASH is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
# CONFIG_FORCE_PAGES is not set
@@ -4191,6 +4057,7 @@ CONFIG_ARM_UNWIND=y
# Samsung Debugging Feature
#
# CONFIG_SEC_DEBUG is not set
# CONFIG_SEC_FORKHANG_DEBUG is not set
# CONFIG_SEC_DEBUG_USER is not set
# CONFIG_SEC_DEBUG_IRQ_EXIT_LOG is not set
# CONFIG_SEC_DEBUG_MSG_LOG is not set
@@ -4238,7 +4105,6 @@ CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
CONFIG_SECURITY_SELINUX_DEFAULT_PERMISSIVE=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
@@ -4266,7 +4132,6 @@ CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_FIPS_INTEG_COPY_ADDRESS=0x8A008000
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
+76 -140
View File
@@ -100,10 +100,8 @@ CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
CONFIG_MEMCG_SWAP_ENABLED=y
# CONFIG_MEMCG_KMEM is not set
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
@@ -114,6 +112,7 @@ CONFIG_RT_GROUP_SCHED=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
# CONFIG_SCHED_AUTOGROUP is not set
@@ -136,7 +135,7 @@ CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -180,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
# CONFIG_HAVE_DMA_API_DEBUG is not set
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
@@ -195,7 +194,6 @@ CONFIG_SECCOMP_FILTER=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -686,6 +684,7 @@ CONFIG_MSM_QMI_INTERFACE=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
# CONFIG_MSM_AVS_HW is not set
# CONFIG_MSM_HW3D is not set
@@ -724,8 +723,8 @@ CONFIG_MSM_PIL_PRONTO=y
CONFIG_MSM_SCM=y
# CONFIG_MSM_BUSPM_DEV is not set
# CONFIG_MSM_TZ_LOG is not set
# CONFIG_MSM_RPM_LOG is not set
# CONFIG_MSM_RPM_STATS_LOG is not set
CONFIG_MSM_RPM_LOG=y
CONFIG_MSM_RPM_STATS_LOG=y
# CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG is not set
CONFIG_MSM_DIRECT_SCLK_ACCESS=y
CONFIG_IOMMU_API=y
@@ -767,9 +766,6 @@ CONFIG_MSM_L2_SPM=y
CONFIG_MSM_OCMEM=y
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
# CONFIG_MSM_OCMEM_DEBUG is not set
# CONFIG_MSM_OCMEM_NONSECURE is not set
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
CONFIG_MSM_OCMEM_POWER_DISABLE=y
# CONFIG_SENSORS_ADSP is not set
CONFIG_MSM_RTB=y
@@ -879,7 +875,6 @@ CONFIG_SCHED_MC=y
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_ARM_ARCH_TIMER=y
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
@@ -988,7 +983,6 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
#
# ARM CPU frequency scaling drivers
@@ -1011,7 +1005,6 @@ CONFIG_CPU_FREQ_MSM=y
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VFPv4=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
@@ -1349,7 +1342,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
@@ -1385,6 +1378,7 @@ CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
# CONFIG_NET_SCH_QFQ is not set
# CONFIG_NET_SCH_INGRESS is not set
# CONFIG_NET_SCH_PLUG is not set
#
@@ -1431,6 +1425,7 @@ CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set
# CONFIG_SOCKEV_NLMCAST is not set
#
@@ -1674,44 +1669,9 @@ CONFIG_DUALWAVE=y
#
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
# CONFIG_SCSI is not set
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
@@ -1730,7 +1690,6 @@ CONFIG_DM_CRYPT=y
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
@@ -1903,7 +1862,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_ENABLED is not set
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
@@ -1938,14 +1897,7 @@ CONFIG_SENSORS_HALL=y
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
@@ -2064,8 +2016,8 @@ CONFIG_INPUT_GPIO=y
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
@@ -2303,15 +2255,12 @@ CONFIG_POWER_SUPPLY=y
# CONFIG_SMB358_CHARGER is not set
# CONFIG_BATTERY_BQ27541 is not set
# CONFIG_BATTERY_BQ28400 is not set
# CONFIG_QPNP_CHARGER is not set
CONFIG_BATTERY_SAMSUNG=y
CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
CONFIG_QPNP_CHARGER=y
# CONFIG_QPNP_SEC_CHARGER is not set
# CONFIG_LTC4088_CHARGER is not set
CONFIG_BATTERY_BCL=y
# CONFIG_CHARGER_SMB347 is not set
CONFIG_QPNP_BMS=y
# CONFIG_BATTERY_SWELLING is not set
CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -2575,6 +2524,7 @@ CONFIG_MSM_ISPIF=y
# CONFIG_S5K4E5YA is not set
# CONFIG_S5K4H5YB is not set
CONFIG_S5K6A3YX=y
CONFIG_IMX175=y
# CONFIG_IMX134 is not set
# CONFIG_SR352 is not set
# CONFIG_SR030PC50 is not set
@@ -2582,7 +2532,6 @@ CONFIG_S5K6A3YX=y
# CONFIG_SR200PC20 is not set
# CONFIG_S5K4ECGX is not set
# CONFIG_IMX135 is not set
CONFIG_IMX175=y
# CONFIG_S5K6B2YX is not set
# CONFIG_OV2720 is not set
# CONFIG_MT9M114 is not set
@@ -2887,7 +2836,6 @@ CONFIG_FB_MSM=y
# CONFIG_FB_MSM_TRIPLE_BUFFER is not set
# CONFIG_FB_MSM_MDP_HW is not set
CONFIG_FB_MSM_MDSS_COMMON=y
# CONFIG_MDP_DEBUG_FS is not set
# CONFIG_FB_MSM_MDP22 is not set
# CONFIG_FB_MSM_MDP30 is not set
# CONFIG_FB_MSM_MDP31 is not set
@@ -3204,37 +3152,31 @@ CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
# CONFIG_HID_PANTHERLORD is not set
# CONFIG_HID_PETALYNX is not set
CONFIG_HID_PICOLCD=y
# CONFIG_HID_PICOLCD_FB is not set
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
# CONFIG_HID_PICOLCD_LCD is not set
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=y
# CONFIG_HID_ROCCAT is not set
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SONY is not set
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_SUNPLUS is not set
# CONFIG_HID_GREENASIA is not set
# CONFIG_HID_SMARTJOYPLUS is not set
# CONFIG_HID_SYNAPTICS_BT is not set
# CONFIG_HID_TIVO is not set
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
# CONFIG_THRUSTMASTER_FF is not set
CONFIG_HID_WACOM=y
CONFIG_HID_WACOM_POWER_SUPPLY=y
# CONFIG_HID_TOPSEED is not set
# CONFIG_HID_THRUSTMASTER is not set
# CONFIG_HID_WACOM is not set
# CONFIG_HID_WIIMOTE is not set
CONFIG_HID_ZAGG=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_HID_ZYDACRON=y
# CONFIG_HID_ZAGG is not set
# CONFIG_HID_ZEROPLUS is not set
# CONFIG_HID_ZYDACRON is not set
# CONFIG_HID_OVR is not set
#
@@ -3305,21 +3247,6 @@ CONFIG_USB_CCID_BRIDGE=y
#
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_LIBUSUAL is not set
CONFIG_USB_STORAGE_DETECT=y
@@ -3327,7 +3254,6 @@ CONFIG_USB_STORAGE_DETECT=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
@@ -3417,7 +3343,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
# CONFIG_USB_QCOM_KS_BRIDGE is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
@@ -3498,7 +3424,6 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_SUPPORT_BKOPS_MODE is not set
CONFIG_MMC_BLOCK_TEST=y
# CONFIG_MMC_CPRM is not set
#
@@ -3669,7 +3594,6 @@ CONFIG_STAGING=y
# CONFIG_ASUS_OLED is not set
# CONFIG_RTLLIB is not set
# CONFIG_R8712U is not set
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_LINE6_USB is not set
# CONFIG_USB_SERIAL_QUATECH2 is not set
@@ -3678,7 +3602,6 @@ CONFIG_STAGING=y
# CONFIG_IIO is not set
# CONFIG_INPUT_MPU6500_SELFTEST is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_USB_ENESTORAGE is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
@@ -3713,7 +3636,7 @@ CONFIG_SEC_OOM_KILLER=y
# CONFIG_ANDROID_SWITCH is not set
# CONFIG_RUNTIME_COMPCACHE is not set
# CONFIG_SAMP_HOTNESS is not set
CONFIG_ANDROID_INTF_ALARM_DEV=y
CONFIG_ANDROID_INTF_ALARM_DEV=y
# CONFIG_PHONE is not set
# CONFIG_USB_WPAN_HCD is not set
@@ -3748,7 +3671,6 @@ CONFIG_QPNP_REVID=y
# CONFIG_IPA is not set
# CONFIG_MSM_AVTIMER is not set
# CONFIG_PFT is not set
# CONFIG_SSM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3756,13 +3678,9 @@ CONFIG_HAVE_CLK_PREPARE=y
# Hardware Spinlock drivers
#
CONFIG_SS_VIBRATOR=y
# CONFIG_TACTILE_ASSIST is not set
# CONFIG_VIBRATOR_UPDATE is not set
# CONFIG_MOTOR_DRV_ISA1400 is not set
CONFIG_MOTOR_DRV_DRV2603=y
# CONFIG_DRV2604_VIBRATOR is not set
# CONFIG_MOTOR_ISA1000 is not set
# CONFIG_MOTOR_DRV_TSP5000 is not set
# CONFIG_MSM_VIBRATOR is not set
# CONFIG_MAX77826_VIBRATOR is not set
# CONFIG_CONFIG_HAPTIC_ISA1200 is not set
@@ -3799,10 +3717,30 @@ CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
#
# CONFIG_CORESIGHT is not set
# CONFIG_BIF is not set
CONFIG_BATTERY_SAMSUNG=y
CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
CONFIG_BATTERY_SAMSUNG_DATA=y
# CONFIG_CHARGING_VZWCONCEPT is not set
CONFIG_BATTERY_SWELLING=y
# CONFIG_FUELGAUGE_DUMMY is not set
# CONFIG_FUELGAUGE_MAX17042 is not set
# CONFIG_FUELGAUGE_MAX17048 is not set
# CONFIG_FUELGAUGE_MAX17050 is not set
# CONFIG_FUELGAUGE_MAX77823 is not set
# CONFIG_CHARGER_DUMMY is not set
# CONFIG_CHARGER_SMB328 is not set
# CONFIG_CHARGER_SMB358 is not set
# CONFIG_CHARGER_SMB1357 is not set
# CONFIG_CHARGER_BQ24157 is not set
# CONFIG_CHARGER_BQ24190 is not set
# CONFIG_CHARGER_BQ24191 is not set
# CONFIG_CHARGER_BQ24260 is not set
# CONFIG_CHARGER_MAX77823 is not set
# CONFIG_CHARGER_SM5414 is not set
CONFIG_SAMSUNG_LPM_MODE=y
# CONFIG_SAMSUNG_BATTERY_ENG_TEST is not set
# CONFIG_SAMSUNG_BATTERY_FACTORY is not set
# CONFIG_DISABLE_SAVE_CAPACITY_MAX is not set
# CONFIG_EN_OOPS is not set
# CONFIG_CONTROL_OTG_POPUP is not set
CONFIG_SENSORS=y
@@ -3902,7 +3840,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
@@ -3966,6 +3904,7 @@ CONFIG_SDFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:sdcard_external:s0"
CONFIG_SDFAT_SUPPORT_STLOG=y
# CONFIG_SDFAT_DEBUG is not set
CONFIG_SDFAT_STATISTICS=y
CONFIG_SDFAT_UEVENT=y
#
# Pseudo filesystems
@@ -4066,8 +4005,8 @@ CONFIG_NLS_UTF8=y
#
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4083,12 +4022,8 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
@@ -4106,9 +4041,8 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -4140,7 +4074,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
@@ -4159,7 +4093,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
CONFIG_KPROBE_EVENT=y
# CONFIG_CPU_FREQ_SWITCH_PROFILER is not set
# CONFIG_RING_BUFFER_BENCHMARK is not set
CONFIG_DYNAMIC_DEBUG=y
# CONFIG_DYNAMIC_DEBUG is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_PANIC_ON_DATA_CORRUPTION is not set
@@ -4167,6 +4101,7 @@ CONFIG_DYNAMIC_DEBUG=y
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_HASH is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
@@ -4179,6 +4114,7 @@ CONFIG_ARM_UNWIND=y
# Samsung Debugging Feature
#
# CONFIG_SEC_DEBUG is not set
# CONFIG_SEC_FORKHANG_DEBUG is not set
# CONFIG_SEC_DEBUG_USER is not set
# CONFIG_SEC_DEBUG_IRQ_EXIT_LOG is not set
# CONFIG_SEC_DEBUG_MSG_LOG is not set
@@ -4196,6 +4132,7 @@ CONFIG_ARM_UNWIND=y
# PowerManagement Feature
#
CONFIG_SEC_PM=y
# CONFIG_SEC_PM_DEBUG is not set
# CONFIG_PID_IN_CONTEXTIDR is not set
# CONFIG_DEBUG_SET_MODULE_RONX is not set
@@ -4218,17 +4155,13 @@ CONFIG_KEYS=y
# CONFIG_ENCRYPTED_KEYS is not set
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
# CONFIG_SECURITY_DMESG_RESTRICT is not set
# CONFIG_SECURITY_PERF_EVENTS_RESTRICT is not set
CONFIG_SECURITY=y
# CONFIG_SECURITYFS is not set
CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
# CONFIG_SECURITY_SELINUX_DEFAULT_ENFORCE is not set
# CONFIG_SECURITY_SELINUX_ALWAYS_ENFORCE is not set
CONFIG_SECURITY_SELINUX_DEFAULT_PERMISSIVE=y
# CONFIG_SECURITY_SELINUX_ALWAYS_PERMISSIVE is not set
CONFIG_SECURITY_SELINUX_PRETEND_ENFORCE=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
@@ -4236,15 +4169,12 @@ CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
# CONFIG_SEC_SELINUX is not set
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_SECURITY_APPARMOR is not set
# CONFIG_SECURITY_YAMA is not set
# CONFIG_IMA is not set
# CONFIG_EVM is not set
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SECURITY_DAC is not set
CONFIG_DEFAULT_SECURITY="selinux"
CONFIG_CRYPTO=y
#
# ICCC
@@ -4259,7 +4189,6 @@ CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_FIPS_INTEG_COPY_ADDRESS=0x8A008000
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
@@ -4408,8 +4337,15 @@ CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_LZ4_COMPRESS=y
CONFIG_LZ4_DECOMPRESS=y
# CONFIG_XZ_DEC is not set
# CONFIG_XZ_DEC_BCJ is not set
CONFIG_XZ_DEC=y
# CONFIG_XZ_DEC_X86 is not set
# CONFIG_XZ_DEC_POWERPC is not set
# CONFIG_XZ_DEC_IA64 is not set
CONFIG_XZ_DEC_ARM=y
# CONFIG_XZ_DEC_ARMTHUMB is not set
# CONFIG_XZ_DEC_SPARC is not set
CONFIG_XZ_DEC_BCJ=y
# CONFIG_XZ_DEC_TEST is not set
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
+75 -138
View File
@@ -100,10 +100,8 @@ CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
CONFIG_MEMCG_SWAP_ENABLED=y
# CONFIG_MEMCG_KMEM is not set
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
@@ -114,6 +112,7 @@ CONFIG_RT_GROUP_SCHED=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
# CONFIG_SCHED_AUTOGROUP is not set
@@ -136,7 +135,7 @@ CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -180,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
# CONFIG_HAVE_DMA_API_DEBUG is not set
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
@@ -195,7 +194,6 @@ CONFIG_SECCOMP_FILTER=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -686,6 +684,7 @@ CONFIG_MSM_QMI_INTERFACE=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
# CONFIG_MSM_AVS_HW is not set
# CONFIG_MSM_HW3D is not set
@@ -724,8 +723,8 @@ CONFIG_MSM_PIL_PRONTO=y
CONFIG_MSM_SCM=y
# CONFIG_MSM_BUSPM_DEV is not set
# CONFIG_MSM_TZ_LOG is not set
# CONFIG_MSM_RPM_LOG is not set
# CONFIG_MSM_RPM_STATS_LOG is not set
CONFIG_MSM_RPM_LOG=y
CONFIG_MSM_RPM_STATS_LOG=y
# CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG is not set
CONFIG_MSM_DIRECT_SCLK_ACCESS=y
CONFIG_IOMMU_API=y
@@ -767,9 +766,6 @@ CONFIG_MSM_L2_SPM=y
CONFIG_MSM_OCMEM=y
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
# CONFIG_MSM_OCMEM_DEBUG is not set
# CONFIG_MSM_OCMEM_NONSECURE is not set
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
CONFIG_MSM_OCMEM_POWER_DISABLE=y
# CONFIG_SENSORS_ADSP is not set
CONFIG_MSM_RTB=y
@@ -879,7 +875,6 @@ CONFIG_SCHED_MC=y
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_ARM_ARCH_TIMER=y
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
@@ -988,7 +983,6 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
#
# ARM CPU frequency scaling drivers
@@ -1011,7 +1005,6 @@ CONFIG_CPU_FREQ_MSM=y
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VFPv4=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
@@ -1349,7 +1342,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
@@ -1385,6 +1378,7 @@ CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
# CONFIG_NET_SCH_QFQ is not set
# CONFIG_NET_SCH_INGRESS is not set
# CONFIG_NET_SCH_PLUG is not set
#
@@ -1431,6 +1425,7 @@ CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set
# CONFIG_SOCKEV_NLMCAST is not set
#
@@ -1674,44 +1669,9 @@ CONFIG_DUALWAVE=y
#
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
# CONFIG_SCSI is not set
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
@@ -1730,7 +1690,6 @@ CONFIG_DM_CRYPT=y
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
@@ -1903,7 +1862,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_ENABLED is not set
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
@@ -1937,15 +1896,7 @@ CONFIG_SENSORS_HALL=y
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_KS01 is not set
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
@@ -2064,8 +2015,8 @@ CONFIG_INPUT_GPIO=y
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
@@ -2303,15 +2254,12 @@ CONFIG_POWER_SUPPLY=y
# CONFIG_SMB358_CHARGER is not set
# CONFIG_BATTERY_BQ27541 is not set
# CONFIG_BATTERY_BQ28400 is not set
# CONFIG_QPNP_CHARGER is not set
CONFIG_BATTERY_SAMSUNG=y
CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
CONFIG_QPNP_CHARGER=y
# CONFIG_QPNP_SEC_CHARGER is not set
# CONFIG_LTC4088_CHARGER is not set
CONFIG_BATTERY_BCL=y
# CONFIG_CHARGER_SMB347 is not set
CONFIG_QPNP_BMS=y
# CONFIG_BATTERY_SWELLING is not set
CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -2575,6 +2523,7 @@ CONFIG_MSM_ISPIF=y
# CONFIG_S5K4E5YA is not set
CONFIG_S5K4H5YB=y
CONFIG_S5K6A3YX=y
# CONFIG_IMX175 is not set
# CONFIG_IMX134 is not set
# CONFIG_SR352 is not set
# CONFIG_SR030PC50 is not set
@@ -2582,7 +2531,6 @@ CONFIG_S5K6A3YX=y
# CONFIG_SR200PC20 is not set
# CONFIG_S5K4ECGX is not set
# CONFIG_IMX135 is not set
# CONFIG_IMX175 is not set
# CONFIG_S5K6B2YX is not set
# CONFIG_OV2720 is not set
# CONFIG_MT9M114 is not set
@@ -2887,7 +2835,6 @@ CONFIG_FB_MSM=y
# CONFIG_FB_MSM_TRIPLE_BUFFER is not set
# CONFIG_FB_MSM_MDP_HW is not set
CONFIG_FB_MSM_MDSS_COMMON=y
# CONFIG_MDP_DEBUG_FS is not set
# CONFIG_FB_MSM_MDP22 is not set
# CONFIG_FB_MSM_MDP30 is not set
# CONFIG_FB_MSM_MDP31 is not set
@@ -3204,37 +3151,31 @@ CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
# CONFIG_HID_PANTHERLORD is not set
# CONFIG_HID_PETALYNX is not set
CONFIG_HID_PICOLCD=y
# CONFIG_HID_PICOLCD_FB is not set
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
# CONFIG_HID_PICOLCD_LCD is not set
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=y
# CONFIG_HID_ROCCAT is not set
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SONY is not set
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_SUNPLUS is not set
# CONFIG_HID_GREENASIA is not set
# CONFIG_HID_SMARTJOYPLUS is not set
# CONFIG_HID_SYNAPTICS_BT is not set
# CONFIG_HID_TIVO is not set
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
# CONFIG_THRUSTMASTER_FF is not set
CONFIG_HID_WACOM=y
CONFIG_HID_WACOM_POWER_SUPPLY=y
# CONFIG_HID_TOPSEED is not set
# CONFIG_HID_THRUSTMASTER is not set
# CONFIG_HID_WACOM is not set
# CONFIG_HID_WIIMOTE is not set
CONFIG_HID_ZAGG=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_HID_ZYDACRON=y
# CONFIG_HID_ZAGG is not set
# CONFIG_HID_ZEROPLUS is not set
# CONFIG_HID_ZYDACRON is not set
# CONFIG_HID_OVR is not set
#
@@ -3305,21 +3246,6 @@ CONFIG_USB_CCID_BRIDGE=y
#
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_LIBUSUAL is not set
CONFIG_USB_STORAGE_DETECT=y
@@ -3327,7 +3253,6 @@ CONFIG_USB_STORAGE_DETECT=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
@@ -3498,7 +3423,6 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_SUPPORT_BKOPS_MODE is not set
CONFIG_MMC_BLOCK_TEST=y
# CONFIG_MMC_CPRM is not set
#
@@ -3669,7 +3593,6 @@ CONFIG_STAGING=y
# CONFIG_ASUS_OLED is not set
# CONFIG_RTLLIB is not set
# CONFIG_R8712U is not set
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_LINE6_USB is not set
# CONFIG_USB_SERIAL_QUATECH2 is not set
@@ -3678,7 +3601,6 @@ CONFIG_STAGING=y
# CONFIG_IIO is not set
# CONFIG_INPUT_MPU6500_SELFTEST is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_USB_ENESTORAGE is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
@@ -3713,7 +3635,7 @@ CONFIG_SEC_OOM_KILLER=y
# CONFIG_ANDROID_SWITCH is not set
# CONFIG_RUNTIME_COMPCACHE is not set
# CONFIG_SAMP_HOTNESS is not set
CONFIG_ANDROID_INTF_ALARM_DEV=y
CONFIG_ANDROID_INTF_ALARM_DEV=y
# CONFIG_PHONE is not set
# CONFIG_USB_WPAN_HCD is not set
@@ -3748,7 +3670,6 @@ CONFIG_QPNP_REVID=y
# CONFIG_IPA is not set
# CONFIG_MSM_AVTIMER is not set
# CONFIG_PFT is not set
# CONFIG_SSM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3756,13 +3677,9 @@ CONFIG_HAVE_CLK_PREPARE=y
# Hardware Spinlock drivers
#
CONFIG_SS_VIBRATOR=y
# CONFIG_TACTILE_ASSIST is not set
# CONFIG_VIBRATOR_UPDATE is not set
# CONFIG_MOTOR_DRV_ISA1400 is not set
CONFIG_MOTOR_DRV_DRV2603=y
# CONFIG_DRV2604_VIBRATOR is not set
# CONFIG_MOTOR_ISA1000 is not set
# CONFIG_MOTOR_DRV_TSP5000 is not set
# CONFIG_MSM_VIBRATOR is not set
# CONFIG_MAX77826_VIBRATOR is not set
# CONFIG_CONFIG_HAPTIC_ISA1200 is not set
@@ -3799,10 +3716,30 @@ CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
#
# CONFIG_CORESIGHT is not set
# CONFIG_BIF is not set
CONFIG_BATTERY_SAMSUNG=y
CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
CONFIG_BATTERY_SAMSUNG_DATA=y
# CONFIG_CHARGING_VZWCONCEPT is not set
CONFIG_BATTERY_SWELLING=y
# CONFIG_FUELGAUGE_DUMMY is not set
# CONFIG_FUELGAUGE_MAX17042 is not set
# CONFIG_FUELGAUGE_MAX17048 is not set
# CONFIG_FUELGAUGE_MAX17050 is not set
# CONFIG_FUELGAUGE_MAX77823 is not set
# CONFIG_CHARGER_DUMMY is not set
# CONFIG_CHARGER_SMB328 is not set
# CONFIG_CHARGER_SMB358 is not set
# CONFIG_CHARGER_SMB1357 is not set
# CONFIG_CHARGER_BQ24157 is not set
# CONFIG_CHARGER_BQ24190 is not set
# CONFIG_CHARGER_BQ24191 is not set
# CONFIG_CHARGER_BQ24260 is not set
# CONFIG_CHARGER_MAX77823 is not set
# CONFIG_CHARGER_SM5414 is not set
CONFIG_SAMSUNG_LPM_MODE=y
# CONFIG_SAMSUNG_BATTERY_ENG_TEST is not set
# CONFIG_SAMSUNG_BATTERY_FACTORY is not set
# CONFIG_DISABLE_SAVE_CAPACITY_MAX is not set
# CONFIG_EN_OOPS is not set
# CONFIG_CONTROL_OTG_POPUP is not set
CONFIG_SENSORS=y
@@ -3902,7 +3839,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
@@ -3966,6 +3903,7 @@ CONFIG_SDFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:sdcard_external:s0"
CONFIG_SDFAT_SUPPORT_STLOG=y
# CONFIG_SDFAT_DEBUG is not set
CONFIG_SDFAT_STATISTICS=y
CONFIG_SDFAT_UEVENT=y
#
# Pseudo filesystems
@@ -4066,8 +4004,8 @@ CONFIG_NLS_UTF8=y
#
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4083,10 +4021,8 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
@@ -4104,9 +4040,8 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -4138,7 +4073,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
@@ -4157,7 +4092,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
CONFIG_KPROBE_EVENT=y
# CONFIG_CPU_FREQ_SWITCH_PROFILER is not set
# CONFIG_RING_BUFFER_BENCHMARK is not set
CONFIG_DYNAMIC_DEBUG=y
# CONFIG_DYNAMIC_DEBUG is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_PANIC_ON_DATA_CORRUPTION is not set
@@ -4165,6 +4100,7 @@ CONFIG_DYNAMIC_DEBUG=y
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_HASH is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
@@ -4177,6 +4113,7 @@ CONFIG_ARM_UNWIND=y
# Samsung Debugging Feature
#
# CONFIG_SEC_DEBUG is not set
# CONFIG_SEC_FORKHANG_DEBUG is not set
# CONFIG_SEC_DEBUG_USER is not set
# CONFIG_SEC_DEBUG_IRQ_EXIT_LOG is not set
# CONFIG_SEC_DEBUG_MSG_LOG is not set
@@ -4194,6 +4131,7 @@ CONFIG_ARM_UNWIND=y
# PowerManagement Feature
#
CONFIG_SEC_PM=y
# CONFIG_SEC_PM_DEBUG is not set
# CONFIG_PID_IN_CONTEXTIDR is not set
# CONFIG_DEBUG_SET_MODULE_RONX is not set
@@ -4216,17 +4154,13 @@ CONFIG_KEYS=y
# CONFIG_ENCRYPTED_KEYS is not set
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
# CONFIG_SECURITY_DMESG_RESTRICT is not set
# CONFIG_SECURITY_PERF_EVENTS_RESTRICT is not set
CONFIG_SECURITY=y
# CONFIG_SECURITYFS is not set
CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
# CONFIG_SECURITY_SELINUX_DEFAULT_ENFORCE is not set
# CONFIG_SECURITY_SELINUX_ALWAYS_ENFORCE is not set
CONFIG_SECURITY_SELINUX_DEFAULT_PERMISSIVE=y
# CONFIG_SECURITY_SELINUX_ALWAYS_PERMISSIVE is not set
CONFIG_SECURITY_SELINUX_PRETEND_ENFORCE=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
@@ -4234,15 +4168,12 @@ CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
# CONFIG_SEC_SELINUX is not set
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_SECURITY_APPARMOR is not set
# CONFIG_SECURITY_YAMA is not set
# CONFIG_IMA is not set
# CONFIG_EVM is not set
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SECURITY_DAC is not set
CONFIG_DEFAULT_SECURITY="selinux"
CONFIG_CRYPTO=y
#
# ICCC
@@ -4257,7 +4188,6 @@ CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_FIPS_INTEG_COPY_ADDRESS=0x8A008000
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
@@ -4406,8 +4336,15 @@ CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_LZ4_COMPRESS=y
CONFIG_LZ4_DECOMPRESS=y
# CONFIG_XZ_DEC is not set
# CONFIG_XZ_DEC_BCJ is not set
CONFIG_XZ_DEC=y
# CONFIG_XZ_DEC_X86 is not set
# CONFIG_XZ_DEC_POWERPC is not set
# CONFIG_XZ_DEC_IA64 is not set
CONFIG_XZ_DEC_ARM=y
# CONFIG_XZ_DEC_ARMTHUMB is not set
# CONFIG_XZ_DEC_SPARC is not set
CONFIG_XZ_DEC_BCJ=y
# CONFIG_XZ_DEC_TEST is not set
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
+73 -129
View File
@@ -100,10 +100,8 @@ CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set
CONFIG_MEMCG_SWAP_ENABLED=y
# CONFIG_MEMCG_KMEM is not set
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
@@ -114,6 +112,7 @@ CONFIG_RT_GROUP_SCHED=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
# CONFIG_SCHED_AUTOGROUP is not set
@@ -136,7 +135,7 @@ CONFIG_EXPERT=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -180,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
# CONFIG_HAVE_DMA_API_DEBUG is not set
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
@@ -195,7 +194,6 @@ CONFIG_SECCOMP_FILTER=y
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
@@ -686,6 +684,7 @@ CONFIG_MSM_QMI_INTERFACE=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_DALRPC is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
# CONFIG_MSM_AVS_HW is not set
# CONFIG_MSM_HW3D is not set
@@ -724,8 +723,8 @@ CONFIG_MSM_PIL_PRONTO=y
CONFIG_MSM_SCM=y
# CONFIG_MSM_BUSPM_DEV is not set
# CONFIG_MSM_TZ_LOG is not set
# CONFIG_MSM_RPM_LOG is not set
# CONFIG_MSM_RPM_STATS_LOG is not set
CONFIG_MSM_RPM_LOG=y
CONFIG_MSM_RPM_STATS_LOG=y
# CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG is not set
CONFIG_MSM_DIRECT_SCLK_ACCESS=y
CONFIG_IOMMU_API=y
@@ -767,9 +766,6 @@ CONFIG_MSM_L2_SPM=y
CONFIG_MSM_OCMEM=y
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
# CONFIG_MSM_OCMEM_DEBUG is not set
# CONFIG_MSM_OCMEM_NONSECURE is not set
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
CONFIG_MSM_OCMEM_POWER_DISABLE=y
# CONFIG_SENSORS_ADSP is not set
CONFIG_MSM_RTB=y
@@ -879,7 +875,6 @@ CONFIG_SCHED_MC=y
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_ARM_ARCH_TIMER=y
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
@@ -988,7 +983,6 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
#
# ARM CPU frequency scaling drivers
@@ -1011,7 +1005,6 @@ CONFIG_CPU_FREQ_MSM=y
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_VFPv4=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
@@ -1349,7 +1342,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
@@ -1385,6 +1378,7 @@ CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
# CONFIG_NET_SCH_QFQ is not set
# CONFIG_NET_SCH_INGRESS is not set
# CONFIG_NET_SCH_PLUG is not set
#
@@ -1431,6 +1425,7 @@ CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set
# CONFIG_SOCKEV_NLMCAST is not set
#
@@ -1674,44 +1669,9 @@ CONFIG_DUALWAVE=y
#
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
# CONFIG_SCSI is not set
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
CONFIG_CHR_DEV_SCH=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_LIBFC is not set
# CONFIG_LIBFCOE is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
@@ -1730,7 +1690,6 @@ CONFIG_DM_CRYPT=y
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
@@ -1903,7 +1862,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_INPUT_ENABLED is not set
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
@@ -1938,14 +1897,7 @@ CONFIG_SENSORS_HALL=y
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
@@ -2064,8 +2016,8 @@ CONFIG_INPUT_GPIO=y
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_LIBPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
@@ -2303,15 +2255,12 @@ CONFIG_POWER_SUPPLY=y
# CONFIG_SMB358_CHARGER is not set
# CONFIG_BATTERY_BQ27541 is not set
# CONFIG_BATTERY_BQ28400 is not set
# CONFIG_QPNP_CHARGER is not set
CONFIG_BATTERY_SAMSUNG=y
CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
CONFIG_QPNP_CHARGER=y
# CONFIG_QPNP_SEC_CHARGER is not set
# CONFIG_LTC4088_CHARGER is not set
CONFIG_BATTERY_BCL=y
# CONFIG_CHARGER_SMB347 is not set
CONFIG_QPNP_BMS=y
# CONFIG_BATTERY_SWELLING is not set
CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -2575,6 +2524,7 @@ CONFIG_MSM_ISPIF=y
# CONFIG_S5K4E5YA is not set
# CONFIG_S5K4H5YB is not set
CONFIG_S5K6A3YX=y
CONFIG_IMX175=y
# CONFIG_IMX134 is not set
# CONFIG_SR352 is not set
# CONFIG_SR030PC50 is not set
@@ -2582,7 +2532,6 @@ CONFIG_S5K6A3YX=y
# CONFIG_SR200PC20 is not set
# CONFIG_S5K4ECGX is not set
# CONFIG_IMX135 is not set
CONFIG_IMX175=y
# CONFIG_S5K6B2YX is not set
# CONFIG_OV2720 is not set
# CONFIG_MT9M114 is not set
@@ -2887,7 +2836,6 @@ CONFIG_FB_MSM=y
# CONFIG_FB_MSM_TRIPLE_BUFFER is not set
# CONFIG_FB_MSM_MDP_HW is not set
CONFIG_FB_MSM_MDSS_COMMON=y
# CONFIG_MDP_DEBUG_FS is not set
# CONFIG_FB_MSM_MDP22 is not set
# CONFIG_FB_MSM_MDP30 is not set
# CONFIG_FB_MSM_MDP31 is not set
@@ -3204,37 +3152,31 @@ CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
# CONFIG_PANTHERLORD_FF is not set
CONFIG_HID_PETALYNX=y
# CONFIG_HID_PANTHERLORD is not set
# CONFIG_HID_PETALYNX is not set
CONFIG_HID_PICOLCD=y
# CONFIG_HID_PICOLCD_FB is not set
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
# CONFIG_HID_PICOLCD_LCD is not set
# CONFIG_HID_PICOLCD_LEDS is not set
# CONFIG_HID_PRIMAX is not set
CONFIG_HID_ROCCAT=y
# CONFIG_HID_ROCCAT is not set
# CONFIG_HID_SAITEK is not set
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
# CONFIG_HID_SONY is not set
# CONFIG_HID_SPEEDLINK is not set
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
# CONFIG_GREENASIA_FF is not set
CONFIG_HID_SMARTJOYPLUS=y
# CONFIG_SMARTJOYPLUS_FF is not set
# CONFIG_HID_SUNPLUS is not set
# CONFIG_HID_GREENASIA is not set
# CONFIG_HID_SMARTJOYPLUS is not set
# CONFIG_HID_SYNAPTICS_BT is not set
# CONFIG_HID_TIVO is not set
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
# CONFIG_THRUSTMASTER_FF is not set
CONFIG_HID_WACOM=y
CONFIG_HID_WACOM_POWER_SUPPLY=y
# CONFIG_HID_TOPSEED is not set
# CONFIG_HID_THRUSTMASTER is not set
# CONFIG_HID_WACOM is not set
# CONFIG_HID_WIIMOTE is not set
CONFIG_HID_ZAGG=y
CONFIG_HID_ZEROPLUS=y
# CONFIG_ZEROPLUS_FF is not set
CONFIG_HID_ZYDACRON=y
# CONFIG_HID_ZAGG is not set
# CONFIG_HID_ZEROPLUS is not set
# CONFIG_HID_ZYDACRON is not set
# CONFIG_HID_OVR is not set
#
@@ -3305,21 +3247,6 @@ CONFIG_USB_CCID_BRIDGE=y
#
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_LIBUSUAL is not set
CONFIG_USB_STORAGE_DETECT=y
@@ -3327,7 +3254,6 @@ CONFIG_USB_STORAGE_DETECT=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
#
# USB port drivers
@@ -3417,7 +3343,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
# CONFIG_USB_QCOM_KS_BRIDGE is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=500
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
@@ -3498,7 +3424,6 @@ CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_SUPPORT_BKOPS_MODE is not set
CONFIG_MMC_BLOCK_TEST=y
# CONFIG_MMC_CPRM is not set
#
@@ -3669,7 +3594,6 @@ CONFIG_STAGING=y
# CONFIG_ASUS_OLED is not set
# CONFIG_RTLLIB is not set
# CONFIG_R8712U is not set
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_LINE6_USB is not set
# CONFIG_USB_SERIAL_QUATECH2 is not set
@@ -3678,7 +3602,6 @@ CONFIG_STAGING=y
# CONFIG_IIO is not set
# CONFIG_INPUT_MPU6500_SELFTEST is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_USB_ENESTORAGE is not set
# CONFIG_BCM_WIMAX is not set
# CONFIG_FT1000 is not set
@@ -3748,7 +3671,6 @@ CONFIG_QPNP_REVID=y
# CONFIG_IPA is not set
# CONFIG_MSM_AVTIMER is not set
# CONFIG_PFT is not set
# CONFIG_SSM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3756,13 +3678,9 @@ CONFIG_HAVE_CLK_PREPARE=y
# Hardware Spinlock drivers
#
CONFIG_SS_VIBRATOR=y
# CONFIG_TACTILE_ASSIST is not set
# CONFIG_VIBRATOR_UPDATE is not set
# CONFIG_MOTOR_DRV_ISA1400 is not set
CONFIG_MOTOR_DRV_DRV2603=y
# CONFIG_DRV2604_VIBRATOR is not set
# CONFIG_MOTOR_ISA1000 is not set
# CONFIG_MOTOR_DRV_TSP5000 is not set
# CONFIG_MSM_VIBRATOR is not set
# CONFIG_MAX77826_VIBRATOR is not set
# CONFIG_CONFIG_HAPTIC_ISA1200 is not set
@@ -3799,10 +3717,30 @@ CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
#
# CONFIG_CORESIGHT is not set
# CONFIG_BIF is not set
CONFIG_BATTERY_SAMSUNG=y
CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
CONFIG_BATTERY_SAMSUNG_DATA=y
# CONFIG_CHARGING_VZWCONCEPT is not set
CONFIG_BATTERY_SWELLING=y
# CONFIG_FUELGAUGE_DUMMY is not set
# CONFIG_FUELGAUGE_MAX17042 is not set
# CONFIG_FUELGAUGE_MAX17048 is not set
# CONFIG_FUELGAUGE_MAX17050 is not set
# CONFIG_FUELGAUGE_MAX77823 is not set
# CONFIG_CHARGER_DUMMY is not set
# CONFIG_CHARGER_SMB328 is not set
# CONFIG_CHARGER_SMB358 is not set
# CONFIG_CHARGER_SMB1357 is not set
# CONFIG_CHARGER_BQ24157 is not set
# CONFIG_CHARGER_BQ24190 is not set
# CONFIG_CHARGER_BQ24191 is not set
# CONFIG_CHARGER_BQ24260 is not set
# CONFIG_CHARGER_MAX77823 is not set
# CONFIG_CHARGER_SM5414 is not set
# CONFIG_SAMSUNG_LPM_MODE is not set
# CONFIG_SAMSUNG_BATTERY_ENG_TEST is not set
# CONFIG_SAMSUNG_BATTERY_FACTORY is not set
# CONFIG_DISABLE_SAVE_CAPACITY_MAX is not set
# CONFIG_EN_OOPS is not set
# CONFIG_CONTROL_OTG_POPUP is not set
CONFIG_SENSORS=y
@@ -3902,7 +3840,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
@@ -3966,6 +3904,7 @@ CONFIG_SDFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:sdcard_external:s0"
CONFIG_SDFAT_SUPPORT_STLOG=y
# CONFIG_SDFAT_DEBUG is not set
CONFIG_SDFAT_STATISTICS=y
CONFIG_SDFAT_UEVENT=y
#
# Pseudo filesystems
@@ -4066,8 +4005,8 @@ CONFIG_NLS_UTF8=y
#
CONFIG_PRINTK_TIME=y
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_STRIP_ASM_SYMS is not set
@@ -4083,10 +4022,8 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SYSRQ_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_PREEMPT is not set
@@ -4104,9 +4041,8 @@ CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_INFO_REDUCED is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
@@ -4138,7 +4074,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_TRACING=y
@@ -4157,7 +4093,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
CONFIG_KPROBE_EVENT=y
# CONFIG_CPU_FREQ_SWITCH_PROFILER is not set
# CONFIG_RING_BUFFER_BENCHMARK is not set
CONFIG_DYNAMIC_DEBUG=y
# CONFIG_DYNAMIC_DEBUG is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_PANIC_ON_DATA_CORRUPTION is not set
@@ -4165,6 +4101,7 @@ CONFIG_DYNAMIC_DEBUG=y
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_HASH is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
@@ -4177,6 +4114,7 @@ CONFIG_ARM_UNWIND=y
# Samsung Debugging Feature
#
# CONFIG_SEC_DEBUG is not set
# CONFIG_SEC_FORKHANG_DEBUG is not set
# CONFIG_SEC_DEBUG_USER is not set
# CONFIG_SEC_DEBUG_IRQ_EXIT_LOG is not set
# CONFIG_SEC_DEBUG_MSG_LOG is not set
@@ -4194,6 +4132,7 @@ CONFIG_ARM_UNWIND=y
# PowerManagement Feature
#
CONFIG_SEC_PM=y
# CONFIG_SEC_PM_DEBUG is not set
# CONFIG_PID_IN_CONTEXTIDR is not set
# CONFIG_DEBUG_SET_MODULE_RONX is not set
@@ -4223,7 +4162,6 @@ CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
# CONFIG_SECURITY_PATH is not set
CONFIG_LSM_MMAP_MIN_ADDR=4096
CONFIG_SECURITY_SELINUX_DEFAULT_PERMISSIVE=y
CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
@@ -4251,7 +4189,6 @@ CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_FIPS_INTEG_COPY_ADDRESS=0x8A008000
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
@@ -4400,8 +4337,15 @@ CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_LZ4_COMPRESS=y
CONFIG_LZ4_DECOMPRESS=y
# CONFIG_XZ_DEC is not set
# CONFIG_XZ_DEC_BCJ is not set
CONFIG_XZ_DEC=y
# CONFIG_XZ_DEC_X86 is not set
# CONFIG_XZ_DEC_POWERPC is not set
# CONFIG_XZ_DEC_IA64 is not set
CONFIG_XZ_DEC_ARM=y
# CONFIG_XZ_DEC_ARMTHUMB is not set
# CONFIG_XZ_DEC_SPARC is not set
CONFIG_XZ_DEC_BCJ=y
# CONFIG_XZ_DEC_TEST is not set
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
@@ -94,7 +94,7 @@ CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
CONFIG_QPNP_CHARGER=y
CONFIG_BATTERY_BCL=y
CONFIG_QPNP_BMS=y
# CONFIG_BATTERY_SWELLING is not set
CONFIG_BATTERY_SWELLING=y
#Sec Thermistor
CONFIG_SEC_THERMISTOR=y
+128 -42
View File
@@ -1,4 +1,4 @@
/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2014,2019 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -152,6 +152,20 @@ static struct restart_notifier_block restart_notifiers[] = {
static int init_smem_remote_spinlock(void);
/**
* smem_get_toc() - Used for getting partitions TOC
*
* @return - Base address off partitions TOC
*
* Helper function to get base address of partition TOC,
* that is present in top 4K of first smem region.
*/
static struct smem_toc __iomem *smem_get_toc(void)
{
return smem_areas[0].virt_addr +
smem_areas[0].size - 4 * 1024;
}
/**
* smem_phys_to_virt() - Convert a physical base and offset to virtual address
*
@@ -295,6 +309,7 @@ static void *__smem_get_entry(unsigned id, unsigned *size,
int use_spinlocks = spinlocks_initialized && use_rspinlock;
void *ret = 0;
unsigned long flags = 0;
uint32_t e_size;
if (!skip_init_check && !smem_initialized_check())
return ret;
@@ -308,7 +323,11 @@ static void *__smem_get_entry(unsigned id, unsigned *size,
if (toc[id].allocated) {
phys_addr_t phys_base;
*size = toc[id].size;
e_size = toc[id].size;
if (e_size > MSM_SHARED_RAM_SIZE)
return ret;
*size = e_size;
barrier();
phys_base = toc[id].reserved & BASE_ADDR_MASK;
@@ -343,12 +362,19 @@ static void *__smem_get_entry_to_proc(unsigned id,
bool skip_init_check,
bool use_rspinlock)
{
struct smem_partition_header *hdr;
unsigned long lflags = 0;
void *item = NULL;
struct smem_partition_allocation_header *alloc_hdr;
struct smem_partition_header *hdr;
uint32_t offset_free_uncached;
struct smem_toc __iomem *toc;
uint32_t offset_free_cached;
unsigned long lflags = 0;
uint32_t partition_size;
uint32_t partition_num;
uint32_t padding_data;
uint32_t padding_hdr;
uint32_t a_hdr_size;
uint32_t item_size;
void *item = NULL;
int rc;
SMEM_DBG("%s(%u, %u, %u, %u, %d, %d)\n", __func__, id, *size, to_proc,
@@ -371,8 +397,10 @@ static void *__smem_get_entry_to_proc(unsigned id,
if (flags & SMEM_ANY_HOST_FLAG || !partitions[to_proc].offset)
return __smem_get_entry(id, size, skip_init_check,
use_rspinlock);
toc = smem_get_toc();
partition_num = partitions[to_proc].partition_num;
partition_size = readl_relaxed(&toc->entry[partition_num].size);
hdr = smem_areas[0].virt_addr + partitions[to_proc].offset;
if (unlikely(!spinlocks_initialized)) {
rc = init_smem_remote_spinlock();
@@ -398,11 +426,20 @@ static void *__smem_get_entry_to_proc(unsigned id,
if (flags & SMEM_ITEM_CACHED_FLAG) {
a_hdr_size = ALIGN(sizeof(*alloc_hdr),
partitions[to_proc].size_cacheline);
for (alloc_hdr = (void *)(hdr) + hdr->size - a_hdr_size;
offset_free_cached = hdr->offset_free_cached;
if (WARN_ON(offset_free_cached > partition_size))
return NULL;
for (alloc_hdr = (void *)(hdr) + partition_size - a_hdr_size;
(void *)(alloc_hdr) > (void *)(hdr) +
hdr->offset_free_cached;
offset_free_cached;
alloc_hdr = (void *)(alloc_hdr) -
alloc_hdr->size - a_hdr_size) {
item_size - a_hdr_size) {
item_size = alloc_hdr->size;
padding_data = alloc_hdr->padding_data;
if (WARN_ON(padding_data > item_size
|| item_size > partition_size))
return NULL;
if (alloc_hdr->canary != SMEM_ALLOCATION_CANARY) {
LOG_ERR(
"%s: SMEM corruption detected. Partition %d to %d at %p\n",
@@ -415,20 +452,30 @@ static void *__smem_get_entry_to_proc(unsigned id,
}
if (alloc_hdr->smem_type == id) {
/* 8 byte alignment to match legacy */
*size = ALIGN(alloc_hdr->size -
alloc_hdr->padding_data, 8);
item = (void *)(alloc_hdr) - alloc_hdr->size;
*size = ALIGN(item_size - padding_data, 8);
item = (void *)(alloc_hdr) - item_size;
break;
}
}
} else {
offset_free_uncached = hdr->offset_free_uncached;
if (WARN_ON(offset_free_uncached > partition_size))
return NULL;
for (alloc_hdr = (void *)(hdr) + sizeof(*hdr);
(void *)(alloc_hdr) < (void *)(hdr) +
hdr->offset_free_uncached;
offset_free_uncached;
alloc_hdr = (void *)(alloc_hdr) +
sizeof(*alloc_hdr) +
alloc_hdr->padding_hdr +
alloc_hdr->size) {
padding_hdr +
item_size) {
padding_hdr = alloc_hdr->padding_hdr;
padding_data = alloc_hdr->padding_data;
item_size = alloc_hdr->size;
if (WARN_ON(padding_hdr > partition_size
|| item_size > partition_size
|| padding_data > item_size))
return NULL;
if (alloc_hdr->canary != SMEM_ALLOCATION_CANARY) {
LOG_ERR(
"%s: SMEM corruption detected. Partition %d to %d at %p\n",
@@ -441,11 +488,10 @@ static void *__smem_get_entry_to_proc(unsigned id,
}
if (alloc_hdr->smem_type == id) {
/* 8 byte alignment to match legacy */
*size = ALIGN(alloc_hdr->size -
alloc_hdr->padding_data, 8);
*size = ALIGN(item_size - padding_data, 8);
item = (void *)(alloc_hdr) +
sizeof(*alloc_hdr) +
alloc_hdr->padding_hdr;
padding_hdr;
break;
}
}
@@ -530,10 +576,17 @@ static void *alloc_item_nonsecure(unsigned id, unsigned size_in)
void *smem_base = MSM_SHARED_RAM_BASE;
struct smem_shared *shared = smem_base;
struct smem_heap_entry *toc = shared->heap_toc;
uint32_t free_offset, heap_remaining;
void *ret = NULL;
if (shared->heap_info.heap_remaining >= size_in) {
toc[id].offset = shared->heap_info.free_offset;
heap_remaining = shared->heap_info.heap_remaining;
free_offset = shared->heap_info.free_offset;
if (WARN_ON(heap_remaining > MSM_SHARED_RAM_SIZE
|| free_offset > MSM_SHARED_RAM_SIZE))
return NULL;
if (heap_remaining >= size_in) {
toc[id].offset = free_offset;
toc[id].size = size_in;
/*
* wmb() is necessary to ensure the allocation data is
@@ -545,7 +598,7 @@ static void *alloc_item_nonsecure(unsigned id, unsigned size_in)
shared->heap_info.free_offset += size_in;
shared->heap_info.heap_remaining -= size_in;
ret = smem_base + toc[id].offset;
ret = smem_base + free_offset;
/*
* wmb() is necessary to ensure the heap data is consistent
* before continuing to prevent race conditions with remote
@@ -581,11 +634,15 @@ static void *alloc_item_secure(unsigned id, unsigned size_in, unsigned to_proc,
void *smem_base = MSM_SHARED_RAM_BASE;
struct smem_partition_header *hdr;
struct smem_partition_allocation_header *alloc_hdr;
uint32_t offset_free_uncached;
struct smem_toc __iomem *toc;
uint32_t offset_free_cached;
uint32_t partition_size;
uint32_t partition_num;
uint32_t a_hdr_size;
uint32_t a_data_size;
uint32_t size_cacheline;
uint32_t free_space;
uint32_t partition_num;
void *ret = NULL;
hdr = smem_base + partitions[to_proc].offset;
@@ -602,27 +659,36 @@ static void *alloc_item_secure(unsigned id, unsigned size_in, unsigned to_proc,
}
size_cacheline = partitions[to_proc].size_cacheline;
free_space = hdr->offset_free_cached -
hdr->offset_free_uncached;
toc = smem_get_toc();
partition_size = readl_relaxed(&toc->entry[partition_num].size);
offset_free_cached = hdr->offset_free_cached;
offset_free_uncached = hdr->offset_free_uncached;
if (WARN_ON(offset_free_uncached > offset_free_cached
|| offset_free_cached > partition_size))
return NULL;
free_space = offset_free_cached - offset_free_uncached;
if (flags & SMEM_ITEM_CACHED_FLAG) {
a_hdr_size = ALIGN(sizeof(*alloc_hdr), size_cacheline);
a_data_size = ALIGN(size_in, size_cacheline);
if (free_space < a_hdr_size + a_data_size) {
if (free_space < a_hdr_size + a_data_size
|| free_space < size_in) {
SMEM_INFO(
"%s: id %u not enough memory %u (required %u)\n",
__func__, id, free_space,
a_hdr_size + a_data_size);
"%s: id %u not enough memory %u (required %u), (size_in %u)\n",
__func__, id, free_space,
a_hdr_size + a_data_size, size_in);
return ret;
}
alloc_hdr = (void *)(hdr) + hdr->offset_free_cached -
a_hdr_size;
alloc_hdr = (void *)(hdr) + offset_free_cached - a_hdr_size;
alloc_hdr->canary = SMEM_ALLOCATION_CANARY;
alloc_hdr->smem_type = id;
alloc_hdr->size = a_data_size;
alloc_hdr->padding_data = a_data_size - size_in;
alloc_hdr->padding_hdr = a_hdr_size - sizeof(*alloc_hdr);
hdr->offset_free_cached = hdr->offset_free_cached -
hdr->offset_free_cached = offset_free_cached -
a_hdr_size - a_data_size;
ret = (void *)(alloc_hdr) - a_data_size;
/*
@@ -637,20 +703,21 @@ static void *alloc_item_secure(unsigned id, unsigned size_in, unsigned to_proc,
} else {
a_hdr_size = sizeof(*alloc_hdr);
a_data_size = ALIGN(size_in, 8);
if (free_space < a_hdr_size + a_data_size) {
if (free_space < a_hdr_size + a_data_size
|| free_space < size_in) {
SMEM_INFO(
"%s: id %u not enough memory %u (required %u)\n",
__func__, id, free_space,
a_hdr_size + a_data_size);
"%s: id %u not enough memory %u (required %u) (size_in %u)\n",
__func__, id, free_space,
a_hdr_size + a_data_size, size_in);
return ret;
}
alloc_hdr = (void *)(hdr) + hdr->offset_free_uncached;
alloc_hdr = (void *)(hdr) + offset_free_uncached;
alloc_hdr->canary = SMEM_ALLOCATION_CANARY;
alloc_hdr->smem_type = id;
alloc_hdr->size = a_data_size;
alloc_hdr->padding_data = a_data_size - size_in;
alloc_hdr->padding_hdr = a_hdr_size - sizeof(*alloc_hdr);
hdr->offset_free_uncached = hdr->offset_free_uncached +
hdr->offset_free_uncached = offset_free_uncached +
a_hdr_size + a_data_size;
ret = alloc_hdr + 1;
}
@@ -864,6 +931,12 @@ unsigned smem_get_free_space(unsigned to_proc)
{
struct smem_partition_header *hdr;
struct smem_shared *shared;
uint32_t offset_free_uncached;
struct smem_toc __iomem *toc;
uint32_t offset_free_cached;
uint32_t heap_remaining;
uint32_t p_size;
uint32_t p_num;
if (to_proc >= NUM_SMEM_SUBSYSTEMS) {
pr_err("%s: invalid to_proc:%d\n", __func__, to_proc);
@@ -878,11 +951,24 @@ unsigned smem_get_free_space(unsigned to_proc)
return UINT_MAX;
}
hdr = smem_areas[0].virt_addr + partitions[to_proc].offset;
return hdr->offset_free_cached - hdr->offset_free_uncached;
} else {
shared = (void *)MSM_SHARED_RAM_BASE;
return shared->heap_info.heap_remaining;
offset_free_cached = hdr->offset_free_cached;
offset_free_uncached = hdr->offset_free_uncached;
toc = smem_get_toc();
p_num = partitions[to_proc].partition_num;
p_size = readl_relaxed(&toc->entry[p_num].size);
if (WARN_ON(offset_free_uncached > offset_free_cached
|| offset_free_cached > p_size))
return -EINVAL;
return offset_free_cached - offset_free_uncached;
}
shared = (void *)MSM_SHARED_RAM_BASE;
heap_remaining = shared->heap_info.heap_remaining;
if (WARN_ON(heap_remaining > MSM_SHARED_RAM_SIZE))
return -EINVAL;
return heap_remaining;
}
EXPORT_SYMBOL(smem_get_free_space);
@@ -1133,8 +1219,8 @@ static void smem_init_security_partition(struct smem_toc_entry *entry,
LOG_ERR("Smem partition %d hdr magic is bad\n", num);
BUG();
}
if (!hdr->size) {
LOG_ERR("Smem partition %d size is 0\n", num);
if (hdr->size != entry->size) {
LOG_ERR("Smem partition %d size is invalid\n", num);
BUG();
}
if (hdr->offset_free_uncached > hdr->size) {
+1 -1
View File
@@ -487,7 +487,7 @@ SYSCALL_DEFINE6(sparc_ipc, unsigned int, call, int, first, unsigned long, second
switch (call) {
case SHMAT: {
ulong raddr;
err = do_shmat(first, ptr, (int)second, &raddr);
err = do_shmat(first, ptr, (int)second, &raddr, SHMLBA);
if (!err) {
if (put_user(raddr,
(ulong __user *) third))
+1 -1
View File
@@ -44,7 +44,7 @@ asmlinkage long xtensa_shmat(int shmid, char __user *shmaddr, int shmflg)
unsigned long ret;
long err;
err = do_shmat(shmid, shmaddr, shmflg, &ret);
err = do_shmat(shmid, shmaddr, shmflg, &ret, SHMLBA);
if (err)
return err;
return (long)ret;
+10
View File
@@ -2072,8 +2072,13 @@ static int get_fuelgauge_soc(struct i2c_client *client)
goto return_soc;
}
#if defined(ANDROID_ALARM_ACTIVATED)
current_time = alarm_get_elapsed_realtime();
ts = ktime_to_timespec(current_time);
#else
current_time = ktime_get_boottime();
ts = ktime_to_timespec(current_time);
#endif
/* check fullcap range */
fullcap_check_interval =
@@ -2218,8 +2223,13 @@ bool sec_hal_fg_init(struct i2c_client *client)
ktime_t current_time;
struct timespec ts;
#if defined(ANDROID_ALARM_ACTIVATED)
current_time = alarm_get_elapsed_realtime();
ts = ktime_to_timespec(current_time);
#else
current_time = ktime_get_boottime();
ts = ktime_to_timespec(current_time);
#endif
board_fuelgauge_init(fuelgauge);
+8 -8
View File
@@ -22,9 +22,9 @@
static void * samsung_battery_data;
#define CAPACITY_MAX 1000
#define CAPACITY_MAX 1000
#define CAPACITY_MAX_MARGIN 50
#define CAPACITY_MIN 0
#define CAPACITY_MIN 0
static sec_bat_adc_table_data_t temp_table[] = {
{26537, 800},
@@ -54,16 +54,16 @@ static sec_bat_adc_table_data_t chg_temp_table[] = {
{0, 0},
};
#define TEMP_HIGH_THRESHOLD_EVENT 600
#define TEMP_HIGH_RECOVERY_EVENT 470
#define TEMP_HIGH_THRESHOLD_EVENT 580
#define TEMP_HIGH_RECOVERY_EVENT 530
#define TEMP_LOW_THRESHOLD_EVENT (-50)
#define TEMP_LOW_RECOVERY_EVENT 0
#define TEMP_HIGH_THRESHOLD_NORMAL 600
#define TEMP_HIGH_RECOVERY_NORMAL 470
#define TEMP_HIGH_THRESHOLD_NORMAL 580
#define TEMP_HIGH_RECOVERY_NORMAL 530
#define TEMP_LOW_THRESHOLD_NORMAL (-50)
#define TEMP_LOW_RECOVERY_NORMAL 0
#define TEMP_HIGH_THRESHOLD_LPM 600
#define TEMP_HIGH_RECOVERY_LPM 470
#define TEMP_HIGH_THRESHOLD_LPM 580
#define TEMP_HIGH_RECOVERY_LPM 530
#define TEMP_LOW_THRESHOLD_LPM (-50)
#define TEMP_LOW_RECOVERY_LPM 0
+11 -11
View File
@@ -1925,8 +1925,8 @@ static void sec_bat_get_battery_info(
{
union power_supply_propval value;
#if defined(CONFIG_MACH_VIENNAEUR) || defined(CONFIG_MACH_VIENNAVZW) || defined(CONFIG_MACH_VIENNAKOR) || defined(CONFIG_MACH_V2) || \
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_SEC_DEGAS_PROJECT) || \
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW)
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_MACH_S3VE3G_EUR) || \
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW) || defined(CONFIG_SEC_DEGAS_PROJECT)
static struct timespec old_ts;
struct timespec c_ts;
@@ -2029,8 +2029,8 @@ static void sec_bat_get_battery_info(
sec_bat_check_changed_soc(battery, &value);
#if defined(CONFIG_MACH_VIENNAEUR) || defined(CONFIG_MACH_VIENNAVZW) || defined(CONFIG_MACH_VIENNAKOR) || defined(CONFIG_MACH_V2) || \
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_SEC_DEGAS_PROJECT) || \
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW)
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_MACH_S3VE3G_EUR) || \
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW) || defined(CONFIG_SEC_DEGAS_PROJECT)
/* if the battery status was full, and SOC wasn't 100% yet,
then ignore FG SOC, and report (previous SOC +1)% */
if (battery->status != POWER_SUPPLY_STATUS_FULL) {
@@ -2406,17 +2406,17 @@ continue_monitor:
"%s: battery->stability_test(%d), battery->eng_not_full_status(%d)\n",
__func__, battery->stability_test, battery->eng_not_full_status);
#endif
if (battery->store_mode && battery->cable_type != POWER_SUPPLY_TYPE_BATTERY) {
if (battery->store_mode && !poweroff_charging && (battery->cable_type != POWER_SUPPLY_TYPE_BATTERY)) {
dev_info(battery->dev,
"%s: @battery->capacity = (%d), battery->status= (%d), battery->store_mode=(%d)\n",
__func__, battery->capacity, battery->status, battery->store_mode);
if ((battery->capacity >= 35) && (battery->status == POWER_SUPPLY_STATUS_CHARGING)) {
if ((battery->capacity >= STORE_MODE_CHARGING_MAX) && (battery->status == POWER_SUPPLY_STATUS_CHARGING)) {
battery->status = POWER_SUPPLY_STATUS_DISCHARGING;
sec_bat_set_charge(battery, false);
}
if ((battery->capacity <= 30) && (battery->status == POWER_SUPPLY_STATUS_DISCHARGING)) {
if ((battery->capacity <= STORE_MODE_CHARGING_MIN) && (battery->status == POWER_SUPPLY_STATUS_DISCHARGING)) {
battery->status = POWER_SUPPLY_STATUS_CHARGING;
sec_bat_set_charge(battery, true);
}
@@ -3637,8 +3637,8 @@ static int sec_bat_get_property(struct power_supply *psy,
}
#if defined(CONFIG_MACH_VIENNAEUR) || defined(CONFIG_MACH_VIENNAVZW) || defined(CONFIG_MACH_VIENNAKOR) || defined(CONFIG_MACH_V2) || \
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || \
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW)|| defined(CONFIG_SEC_DEGAS_PROJECT)
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_MACH_S3VE3G_EUR) || \
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW) || defined(CONFIG_SEC_DEGAS_PROJECT)
if (battery->status == POWER_SUPPLY_STATUS_FULL &&
battery->capacity != 100) {
val->intval = POWER_SUPPLY_STATUS_CHARGING;
@@ -3725,8 +3725,8 @@ static int sec_bat_get_property(struct power_supply *psy,
}
#else
#if defined(CONFIG_MACH_VIENNAEUR) || defined(CONFIG_MACH_VIENNAVZW) || defined(CONFIG_MACH_VIENNAKOR) || defined(CONFIG_MACH_V2) || \
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || \
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW)|| defined(CONFIG_SEC_DEGAS_PROJECT)
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_MACH_S3VE3G_EUR) || \
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW) || defined(CONFIG_SEC_DEGAS_PROJECT)
val->intval = battery->capacity;
#else
/* In full-charged status, SOC is always 100% */
+2 -1
View File
@@ -1,4 +1,4 @@
/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -2201,6 +2201,7 @@ fail_alloc:
kfree(new_entry->dci_log_mask);
}
kfree(new_entry);
put_task_struct(current);
mutex_unlock(&driver->dci_mutex);
return DIAG_DCI_NO_REG;
}
+2
View File
@@ -3903,6 +3903,8 @@ kgsl_mmap_memstore(struct kgsl_device *device, struct vm_area_struct *vma)
if (vma->vm_flags & VM_WRITE)
return -EPERM;
vma->vm_flags &= ~VM_MAYWRITE;
if (memdesc->size != vma_size) {
KGSL_MEM_ERR(device, "memstore bad size: %d should be %d\n",
vma_size, memdesc->size);
+13 -2
View File
@@ -1170,6 +1170,17 @@ static void hid_output_field(const struct hid_device *hid,
}
}
/*
* Compute the size of a report.
*/
static size_t hid_compute_report_size(struct hid_report *report)
{
if (report->size)
return ((report->size - 1) >> 3) + 1;
return 0;
}
/*
* Create a report.
*/
@@ -1181,7 +1192,7 @@ void hid_output_report(struct hid_report *report, __u8 *data)
if (report->id > 0)
*data++ = report->id;
memset(data, 0, ((report->size - 1) >> 3) + 1);
memset(data, 0, hid_compute_report_size(report));
for (n = 0; n < report->maxfield; n++)
hid_output_field(report->device, report->field[n], data);
}
@@ -1256,7 +1267,7 @@ int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size,
csize--;
}
rsize = ((report->size - 1) >> 3) + 1;
rsize = hid_compute_report_size(report);
if (rsize > HID_MAX_BUFFER_SIZE)
rsize = HID_MAX_BUFFER_SIZE;
+4
View File
@@ -883,6 +883,10 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
}
mapped:
/* Mapping failed, bail out */
if (!bit)
return;
if (device->driver->input_mapped && device->driver->input_mapped(device,
hidinput, field, usage, &bit, &max) < 0)
goto ignore;
+2
View File
@@ -442,6 +442,8 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi,
case HID_UP_BUTTON:
code = BTN_MOUSE + ((usage->hid - 1) & HID_USAGE);
hid_map_usage(hi, usage, bit, max, EV_KEY, code);
if (!*bit)
return -1;
input_set_capability(hi->input, EV_KEY, code);
return 1;
+16 -10
View File
@@ -813,16 +813,18 @@ static int input_default_setkeycode(struct input_dev *dev,
}
}
__clear_bit(*old_keycode, dev->keybit);
__set_bit(ke->keycode, dev->keybit);
for (i = 0; i < dev->keycodemax; i++) {
if (input_fetch_keycode(dev, i) == *old_keycode) {
__set_bit(*old_keycode, dev->keybit);
break; /* Setting the bit twice is useless, so break */
if (*old_keycode <= KEY_MAX) {
__clear_bit(*old_keycode, dev->keybit);
for (i = 0; i < dev->keycodemax; i++) {
if (input_fetch_keycode(dev, i) == *old_keycode) {
__set_bit(*old_keycode, dev->keybit);
/* Setting the bit twice is useless, so break */
break;
}
}
}
__set_bit(ke->keycode, dev->keybit);
return 0;
}
@@ -878,9 +880,13 @@ int input_set_keycode(struct input_dev *dev,
* Simulate keyup event if keycode is not present
* in the keymap anymore
*/
if (test_bit(EV_KEY, dev->evbit) &&
!is_event_supported(old_keycode, dev->keybit, KEY_MAX) &&
__test_and_clear_bit(old_keycode, dev->key)) {
if (old_keycode > KEY_MAX) {
dev_warn(dev->dev.parent ?: &dev->dev,
"%s: got too big old keycode %#x\n",
__func__, old_keycode);
} else if (test_bit(EV_KEY, dev->evbit) &&
!is_event_supported(old_keycode, dev->keybit, KEY_MAX) &&
__test_and_clear_bit(old_keycode, dev->key)) {
input_pass_event(dev, EV_KEY, old_keycode, 0);
if (dev->sync)
+1 -1
View File
@@ -235,7 +235,7 @@
#endif
#define SAMSUNG_TKEY_LED_BRIGHTNESS 90
#if defined(CONFIG_SEC_AFYON_PROJECT) || defined(CONFIG_SEC_ATLANTIC_PROJECT) || defined( CONFIG_SEC_VASTA_PROJECT) || defined(CONFIG_MACH_MEGA2LTE_KTT)
#if defined(CONFIG_SEC_AFYON_PROJECT) || defined(CONFIG_SEC_ATLANTIC_PROJECT) || defined(CONFIG_MACH_S3VE3G_EUR) || defined(CONFIG_SEC_VASTA_PROJECT) || defined(CONFIG_MACH_MEGA2LTE_KTT)
#define SAMSUNG_USE_EXTERNAL_CHARGER
#endif
+12
View File
@@ -1346,6 +1346,11 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
break;
if (forward == prev)
continue;
if (forward->chain.next || forward->chain.prev) {
uvc_trace(UVC_TRACE_DESCR, "Found reference to "
"entity %d already in chain.\n", forward->id);
return -EINVAL;
}
switch (UVC_ENTITY_TYPE(forward)) {
case UVC_VC_EXTENSION_UNIT:
@@ -1427,6 +1432,13 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
return -1;
}
if (term->chain.next || term->chain.prev) {
uvc_trace(UVC_TRACE_DESCR, "Found reference to "
"entity %d already in chain.\n",
term->id);
return -EINVAL;
}
if (uvc_trace_param & UVC_TRACE_PROBE)
printk(" %d", term->id);
+3 -3
View File
@@ -1639,7 +1639,7 @@ qpnp_chg_set_appropriate_vddmax(struct qpnp_chg_chip *chip)
chip->delta_vddmax_mv);
}
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT)
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT) && !defined(CONFIG_MACH_S3VE3G_EUR)
#define MIN_DELTA_MV_TO_INCREASE_VDD_MAX 8
#define MAX_DELTA_VDD_MAX_MV 80
#define VDD_MAX_CENTER_OFFSET 4
@@ -4669,7 +4669,7 @@ qpnp_chg_setup_flags(struct qpnp_chg_chip *chip)
return 0;
}
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT)
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT) && !defined(CONFIG_MACH_S3VE3G_EUR)
static void
sec_qpnp_chg_check_vddmax(struct qpnp_chg_chip *chip)
{
@@ -5612,7 +5612,7 @@ sec_qpnp_chg_get_property(struct power_supply *psy,
val->intval = POWER_SUPPLY_HEALTH_GOOD;
break;
case POWER_SUPPLY_PROP_CURRENT_MAX:
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT)
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT) && !defined(CONFIG_MACH_S3VE3G_EUR)
sec_qpnp_chg_check_vddmax(chip);
#endif
val->intval = charger->charging_current_max;
+2 -2
View File
@@ -2459,10 +2459,10 @@ static int tiocspgrp(struct tty_struct *tty, struct tty_struct *real_tty, pid_t
if (session_of_pgrp(pgrp) != task_session(current))
goto out_unlock;
retval = 0;
spin_lock_irqsave(&tty->ctrl_lock, flags);
spin_lock_irqsave(&real_tty->ctrl_lock, flags);
put_pid(real_tty->pgrp);
real_tty->pgrp = get_pid(pgrp);
spin_unlock_irqrestore(&tty->ctrl_lock, flags);
spin_unlock_irqrestore(&real_tty->ctrl_lock, flags);
out_unlock:
rcu_read_unlock();
return retval;
+1 -1
View File
@@ -1463,7 +1463,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t,
(!regset->active || regset->active(t->task, regset))) {
int ret;
size_t size = regset->n * regset->size;
void *data = kmalloc(size, GFP_KERNEL);
void *data = kzalloc(size, GFP_KERNEL);
if (unlikely(!data))
return 0;
ret = regset->get(t->task, regset,
+7 -5
View File
@@ -1133,10 +1133,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
*/
if (!for_part) {
ret = devcgroup_inode_permission(bdev->bd_inode, perm);
if (ret != 0) {
bdput(bdev);
if (ret != 0)
return ret;
}
}
restart:
@@ -1211,8 +1209,10 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
goto out_clear;
BUG_ON(for_part);
ret = __blkdev_get(whole, mode, 1);
if (ret)
if (ret) {
bdput(whole);
goto out_clear;
}
bdev->bd_contains = whole;
bdev_inode_switch_bdi(bdev->bd_inode,
whole->bd_inode->i_data.backing_dev_info);
@@ -1265,7 +1265,6 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
put_disk(disk);
module_put(owner);
out:
bdput(bdev);
return ret;
}
@@ -1351,6 +1350,9 @@ int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder)
bdput(whole);
}
if (res)
bdput(bdev);
return res;
}
EXPORT_SYMBOL(blkdev_get);
+9 -4
View File
@@ -1591,9 +1591,11 @@ static int ep_loop_check_proc(void *priv, void *cookie, int call_nests)
* not already there, and calling reverse_path_check()
* during ep_insert().
*/
if (list_empty(&epi->ffd.file->f_tfile_llink))
list_add(&epi->ffd.file->f_tfile_llink,
&tfile_check_list);
if (list_empty(&epi->ffd.file->f_tfile_llink)) {
if (get_file_rcu(epi->ffd.file))
list_add(&epi->ffd.file->f_tfile_llink,
&tfile_check_list);
}
}
}
mutex_unlock(&ep->mtx);
@@ -1637,6 +1639,7 @@ static void clear_tfile_check_list(void)
file = list_first_entry(&tfile_check_list, struct file,
f_tfile_llink);
list_del_init(&file->f_tfile_llink);
fput(file);
}
INIT_LIST_HEAD(&tfile_check_list);
}
@@ -1773,8 +1776,10 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
clear_tfile_check_list();
goto error_tgt_fput;
}
} else
} else {
get_file(tfile);
list_add(&tfile->f_tfile_llink, &tfile_check_list);
}
}
mutex_lock_nested(&ep->mtx, 0);
+6 -3
View File
@@ -69,15 +69,18 @@ config SDFAT_CHECK_RO_ATTR
config SDFAT_ALIGNED_MPAGE_WRITE
bool "Enable supporting aligned mpage_write"
default y
default y if SDFAT_FS=y
default n if SDFAT_FS=m
depends on SDFAT_FS
config SDFAT_VIRTUAL_XATTR
bool "Virtual xattr support for sdFAT"
default y
default n
depends on SDFAT_FS
help
To support virtual xattr.
If you enable this feature, it supports virtual xattr.
This feature will be deprecated because it might be the same with
"context" mount option.
config SDFAT_VIRTUAL_XATTR_SELINUX_LABEL
string "Default string for SELinux label"
+2 -1
View File
@@ -708,7 +708,8 @@ static inline AU_INFO_T *amap_get_packing_au(AMAP_T *amap, int dest, int num_to_
}
}
if ((PACKING_HARDLIMIT) && amap->n_need_packing >= PACKING_HARDLIMIT) {
if ((PACKING_HARDLIMIT != 0) &&
amap->n_need_packing >= PACKING_HARDLIMIT) {
/* Compulsory SLC flushing:
* If there was no chance to do best-fit packing
* and the # of AU-aligned allocation exceeds HARD threshold,
+22 -8
View File
@@ -96,7 +96,6 @@ s32 bdev_check_bdi_valid(struct super_block *sb)
fsi->prev_eio |= SDFAT_EIO_BDI;
sdfat_log_msg(sb, KERN_ERR, "%s: block device is "
"eliminated.(bdi:%p)", __func__, sb->s_bdi);
sdfat_debug_warn_on(1);
}
return -ENXIO;
}
@@ -104,18 +103,13 @@ s32 bdev_check_bdi_valid(struct super_block *sb)
return 0;
}
/* Make a readahead request */
s32 bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs)
#if IS_BUILTIN(CONFIG_SDFAT_FS)
static void __bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs)
{
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
u32 sects_per_page = (PAGE_SIZE >> sb->s_blocksize_bits);
struct blk_plug plug;
u64 i;
if (!fsi->bd_opened)
return -EIO;
blk_start_plug(&plug);
for (i = 0; i < num_secs; i++) {
if (i && !(i & (sects_per_page - 1)))
@@ -123,6 +117,26 @@ s32 bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs)
sb_breadahead(sb, (sector_t)(secno + i));
}
blk_finish_plug(&plug);
}
#else
static void __bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs)
{
u64 i;
for (i = 0; i < num_secs; i++)
sb_breadahead(sb, (sector_t)(secno + i));
}
#endif
/* Make a readahead request */
s32 bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs)
{
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
if (!fsi->bd_opened)
return -EIO;
__bdev_readahead(sb, secno, num_secs);
return 0;
}
+17 -22
View File
@@ -158,7 +158,7 @@ static s32 __fs_set_vol_flags(struct super_block *sb, u16 new_flag, s32 always_s
/* skip updating volume dirty flag,
* if this volume has been mounted with read-only
*/
if (sb->s_flags & MS_RDONLY)
if (sb_rdonly(sb))
return 0;
if (!fsi->pbr_bh) {
@@ -177,7 +177,8 @@ static s32 __fs_set_vol_flags(struct super_block *sb, u16 new_flag, s32 always_s
bpb->bsx.state = new_flag & VOL_DIRTY ? FAT_VOL_DIRTY : 0x00;
} else { /* FAT16/12 */
pbr16_t *bpb = (pbr16_t *) fsi->pbr_bh->b_data;
bpb->bpb.state = new_flag & VOL_DIRTY ? FAT_VOL_DIRTY : 0x00;
bpb->bpb.f16.state = new_flag & VOL_DIRTY ?
FAT_VOL_DIRTY : 0x00;
}
if (always_sync)
@@ -1655,7 +1656,7 @@ static bool is_exfat(pbr_t *pbr)
static bool is_fat32(pbr_t *pbr)
{
if (le16_to_cpu(pbr->bpb.f16.num_fat_sectors))
if (le16_to_cpu(pbr->bpb.fat.num_fat_sectors))
return false;
return true;
}
@@ -1668,7 +1669,7 @@ inline pbr_t *read_pbr_with_logical_sector(struct super_block *sb, struct buffer
if (is_exfat(p_pbr))
logical_sect = 1 << p_pbr->bsx.f64.sect_size_bits;
else
logical_sect = get_unaligned_le16(&p_pbr->bpb.f16.sect_size);
logical_sect = get_unaligned_le16(&p_pbr->bpb.fat.sect_size);
/* is x a power of 2?
* (x) != 0 && (((x) & ((x) - 1)) == 0)
@@ -1780,18 +1781,6 @@ s32 fscore_mount(struct super_block *sb)
opts->improved_allocation = 0;
opts->defrag = 0;
ret = mount_exfat(sb, p_pbr);
} else if (is_fat32(p_pbr)) {
if (opts->fs_type && opts->fs_type != FS_TYPE_VFAT) {
sdfat_log_msg(sb, KERN_ERR,
"not specified filesystem type "
"(media:vfat, opts:%s)",
FS_TYPE_STR[opts->fs_type]);
ret = -EINVAL;
goto free_bh;
}
/* set maximum file size for FAT */
sb->s_maxbytes = 0xffffffff;
ret = mount_fat32(sb, p_pbr);
} else {
if (opts->fs_type && opts->fs_type != FS_TYPE_VFAT) {
sdfat_log_msg(sb, KERN_ERR,
@@ -1803,9 +1792,14 @@ s32 fscore_mount(struct super_block *sb)
}
/* set maximum file size for FAT */
sb->s_maxbytes = 0xffffffff;
opts->improved_allocation = 0;
opts->defrag = 0;
ret = mount_fat16(sb, p_pbr);
if (is_fat32(p_pbr)) {
ret = mount_fat32(sb, p_pbr);
} else {
opts->improved_allocation = 0;
opts->defrag = 0;
ret = mount_fat16(sb, p_pbr);
}
}
free_bh:
brelse(tmp_bh);
@@ -1817,8 +1811,9 @@ free_bh:
/* warn misaligned data data start sector must be a multiple of clu_size */
sdfat_log_msg(sb, KERN_INFO,
"detected volume info : %s "
"(bps : %lu, spc : %u, data start : %llu, %s)",
"(%04hX-%04hX, bps : %lu, spc : %u, data start : %llu, %s)",
sdfat_get_vol_type_str(fsi->vol_type),
(fsi->vol_id >> 16) & 0xffff, fsi->vol_id & 0xffff,
sb->s_blocksize, fsi->sect_per_clus, fsi->data_start_sector,
(fsi->data_start_sector & (fsi->sect_per_clus - 1)) ?
"misaligned" : "aligned");
@@ -2374,7 +2369,7 @@ s32 fscore_write_link(struct inode *inode, FILE_ID_T *fid, void *buffer, u64 cou
ep2 = ep;
}
fsi->fs_func->set_entry_time(ep, tm_now(SDFAT_SB(sb), &tm), TM_MODIFY);
fsi->fs_func->set_entry_time(ep, tm_now(inode, &tm), TM_MODIFY);
fsi->fs_func->set_entry_attr(ep, fid->attr);
if (modified) {
@@ -2581,7 +2576,7 @@ s32 fscore_truncate(struct inode *inode, u64 old_size, u64 new_size)
ep2 = ep;
}
fsi->fs_func->set_entry_time(ep, tm_now(SDFAT_SB(sb), &tm), TM_MODIFY);
fsi->fs_func->set_entry_time(ep, tm_now(inode, &tm), TM_MODIFY);
fsi->fs_func->set_entry_attr(ep, fid->attr);
/*
+9 -1
View File
@@ -60,7 +60,15 @@ typedef struct {
void *__buf; // __buf should be the last member
} ENTRY_SET_CACHE_T;
/*----------------------------------------------------------------------*/
/* Inline Functions */
/*----------------------------------------------------------------------*/
static inline bool is_valid_clus(FS_INFO_T *fsi, u32 clus)
{
if (clus < CLUS_BASE || fsi->num_clusters <= clus)
return false;
return true;
}
/*----------------------------------------------------------------------*/
/* External Function Declarations */
+43 -22
View File
@@ -220,20 +220,27 @@ static void exfat_set_entry_size(DENTRY_T *p_entry, u64 size)
ep->size = cpu_to_le64(size);
} /* end of exfat_set_entry_size */
#define TENS_MS_PER_SEC (100)
#define SEC_TO_TENS_MS(sec) (((sec) & 0x01) ? TENS_MS_PER_SEC : 0)
#define TENS_MS_TO_SEC(tens_ms) (((tens_ms) / TENS_MS_PER_SEC) ? 1 : 0)
static void exfat_get_entry_time(DENTRY_T *p_entry, TIMESTAMP_T *tp, u8 mode)
{
u16 t = 0x00, d = 0x21, tz = 0x00;
u16 t = 0x00, d = 0x21, tz = 0x00, s = 0x00;
FILE_DENTRY_T *ep = (FILE_DENTRY_T *)p_entry;
switch (mode) {
case TM_CREATE:
t = le16_to_cpu(ep->create_time);
d = le16_to_cpu(ep->create_date);
s = TENS_MS_TO_SEC(ep->create_time_ms);
tz = ep->create_tz;
break;
case TM_MODIFY:
t = le16_to_cpu(ep->modify_time);
d = le16_to_cpu(ep->modify_date);
s = TENS_MS_TO_SEC(ep->modify_time_ms);
tz = ep->modify_tz;
break;
case TM_ACCESS:
@@ -244,7 +251,7 @@ static void exfat_get_entry_time(DENTRY_T *p_entry, TIMESTAMP_T *tp, u8 mode)
}
tp->tz.value = tz;
tp->sec = (t & 0x001F) << 1;
tp->sec = ((t & 0x001F) << 1) + s;
tp->min = (t >> 5) & 0x003F;
tp->hour = (t >> 11);
tp->day = (d & 0x001F);
@@ -263,12 +270,14 @@ static void exfat_set_entry_time(DENTRY_T *p_entry, TIMESTAMP_T *tp, u8 mode)
switch (mode) {
case TM_CREATE:
ep->create_time = cpu_to_le16(t);
ep->create_time_ms = SEC_TO_TENS_MS(tp->sec);
ep->create_date = cpu_to_le16(d);
ep->create_tz = tp->tz.value;
break;
case TM_MODIFY:
ep->modify_time = cpu_to_le16(t);
ep->modify_date = cpu_to_le16(d);
ep->modify_time_ms = (tp->sec & 0x1) ? TENS_MS_PER_SEC : 0;
ep->modify_tz = tp->tz.value;
break;
case TM_ACCESS:
@@ -286,12 +295,10 @@ static void __init_file_entry(struct super_block *sb, FILE_DENTRY_T *ep, u32 typ
exfat_set_entry_type((DENTRY_T *) ep, type);
tp = tm_now(SDFAT_SB(sb), &tm);
tp = tm_now_sb(sb, &tm);
exfat_set_entry_time((DENTRY_T *) ep, tp, TM_CREATE);
exfat_set_entry_time((DENTRY_T *) ep, tp, TM_MODIFY);
exfat_set_entry_time((DENTRY_T *) ep, tp, TM_ACCESS);
ep->create_time_ms = 0;
ep->modify_time_ms = 0;
} /* end of __init_file_entry */
static void __init_strm_entry(STRM_DENTRY_T *ep, u8 flags, u32 start_clu, u64 size)
@@ -1279,7 +1286,7 @@ static s32 exfat_free_cluster(struct super_block *sb, CHAIN_T *p_chain, s32 do_r
}
/* check cluster validation */
if ((p_chain->dir < 2) && (p_chain->dir >= fsi->num_clusters)) {
if (!is_valid_clus(fsi, p_chain->dir)) {
EMSG("%s: invalid start cluster (%u)\n", __func__, p_chain->dir);
sdfat_debug_bug_on(1);
return -EIO;
@@ -1367,9 +1374,13 @@ static s32 exfat_alloc_cluster(struct super_block *sb, u32 num_alloc, CHAIN_T *p
}
/* check cluster validation */
if ((hint_clu < CLUS_BASE) && (hint_clu >= fsi->num_clusters)) {
EMSG("%s: hint_cluster is invalid (%u)\n", __func__, hint_clu);
ASSERT(0);
if (!is_valid_clus(fsi, hint_clu)) {
/* "last + 1" can be passed as hint_clu. Otherwise, bug_on */
if (hint_clu != fsi->num_clusters) {
EMSG("%s: hint_cluster is invalid (%u)\n",
__func__, hint_clu);
sdfat_debug_bug_on(1);
}
hint_clu = CLUS_BASE;
if (p_chain->flags == 0x03) {
if (exfat_chain_cont_cluster(sb, p_chain->dir, num_clusters))
@@ -1508,43 +1519,53 @@ s32 mount_exfat(struct super_block *sb, pbr_t *p_pbr)
pbr64_t *p_bpb = (pbr64_t *)p_pbr;
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
if (!p_bpb->bsx.num_fats) {
sdfat_msg(sb, KERN_ERR, "bogus number of FAT structure");
return -EINVAL;
}
fsi->sect_per_clus = 1 << p_bpb->bsx.sect_per_clus_bits;
fsi->sect_per_clus_bits = p_bpb->bsx.sect_per_clus_bits;
fsi->cluster_size_bits = fsi->sect_per_clus_bits + sb->s_blocksize_bits;
fsi->cluster_size = 1 << fsi->cluster_size_bits;
if (!p_bpb->bsx.num_fats) {
sdfat_msg(sb, KERN_ERR, "bogus number of FAT structure");
return -EINVAL;
}
if (p_bpb->bsx.num_fats >= 2) {
sdfat_msg(sb, KERN_WARNING,
"unsupported number of FAT structure :%u, try with 1",
p_bpb->bsx.num_fats);
}
fsi->num_FAT_sectors = le32_to_cpu(p_bpb->bsx.fat_length);
if (!fsi->num_FAT_sectors) {
sdfat_msg(sb, KERN_ERR, "bogus fat size");
return -EINVAL;
}
fsi->FAT1_start_sector = le32_to_cpu(p_bpb->bsx.fat_offset);
if (p_bpb->bsx.num_fats == 1)
fsi->FAT2_start_sector = fsi->FAT1_start_sector;
else
fsi->FAT2_start_sector = fsi->FAT1_start_sector + fsi->num_FAT_sectors;
fsi->FAT2_start_sector = fsi->FAT1_start_sector;
fsi->root_start_sector = le32_to_cpu(p_bpb->bsx.clu_offset);
fsi->data_start_sector = fsi->root_start_sector;
fsi->num_sectors = le64_to_cpu(p_bpb->bsx.vol_length);
fsi->num_clusters = le32_to_cpu(p_bpb->bsx.clu_count) + 2;
if (!fsi->num_sectors) {
sdfat_msg(sb, KERN_ERR, "bogus number of total sector count");
return -EINVAL;
}
/* because the cluster index starts with 2 */
fsi->num_clusters = le32_to_cpu(p_bpb->bsx.clu_count) + CLUS_BASE;
fsi->vol_type = EXFAT;
fsi->vol_id = le32_to_cpu(p_bpb->bsx.vol_serial);
fsi->root_dir = le32_to_cpu(p_bpb->bsx.root_cluster);
fsi->dentries_in_root = 0;
fsi->dentries_per_clu = 1 << (fsi->cluster_size_bits - DENTRY_SIZE_BITS);
fsi->vol_flag = (u32) le16_to_cpu(p_bpb->bsx.vol_flags);
fsi->clu_srch_ptr = CLUS_BASE;
fsi->used_clusters = (u32) ~0;
fsi->fs_func = &exfat_fs_func;
fsi->vol_type = EXFAT;
fat_ent_ops_init(sb);
if (p_bpb->bsx.vol_flags & VOL_DIRTY) {
+75 -75
View File
@@ -176,7 +176,7 @@ static s32 fat_free_cluster(struct super_block *sb, CHAIN_T *p_chain, s32 do_rel
}
/* check cluster validation */
if ((p_chain->dir < 2) && (p_chain->dir >= fsi->num_clusters)) {
if (!is_valid_clus(fsi, p_chain->dir)) {
EMSG("%s: invalid start cluster (%u)\n", __func__, p_chain->dir);
sdfat_debug_bug_on(1);
return -EIO;
@@ -479,7 +479,7 @@ static void __init_dos_entry(struct super_block *sb, DOS_DENTRY_T *ep, u32 type,
ep->start_clu_hi = cpu_to_le16(CLUSTER_16(start_clu >> 16));
ep->size = 0;
tp = tm_now(SDFAT_SB(sb), &tm);
tp = tm_now_sb(sb, &tm);
fat_set_entry_time((DENTRY_T *) ep, tp, TM_CREATE);
fat_set_entry_time((DENTRY_T *) ep, tp, TM_MODIFY);
ep->access_date = 0;
@@ -1238,36 +1238,70 @@ static FS_FUNC_T amap_fat_fs_func = {
.get_au_stat = amap_get_au_stat,
};
s32 mount_fat16(struct super_block *sb, pbr_t *p_pbr)
static s32 mount_fat_common(struct super_block *sb, FS_INFO_T *fsi,
bpb_t *p_bpb, u32 root_sects)
{
s32 num_root_sectors;
bpb16_t *p_bpb = &(p_pbr->bpb.f16);
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
bool fat32 = root_sects == 0 ? true : false;
fsi->sect_per_clus = p_bpb->sect_per_clus;
if (!is_power_of_2(fsi->sect_per_clus)) {
sdfat_msg(sb, KERN_ERR, "bogus sectors per cluster %u",
fsi->sect_per_clus);
return -EINVAL;
}
fsi->sect_per_clus_bits = ilog2(p_bpb->sect_per_clus);
fsi->cluster_size_bits = fsi->sect_per_clus_bits + sb->s_blocksize_bits;
fsi->cluster_size = 1 << fsi->cluster_size_bits;
fsi->dentries_per_clu = 1 <<
(fsi->cluster_size_bits - DENTRY_SIZE_BITS);
fsi->vol_flag = VOL_CLEAN;
fsi->clu_srch_ptr = CLUS_BASE;
fsi->used_clusters = (u32)~0;
fsi->fs_func = &fat_fs_func;
fsi->num_FAT_sectors = le16_to_cpu(p_bpb->num_fat_sectors);
if (fat32) {
u32 fat32_len = le32_to_cpu(p_bpb->f32.num_fat32_sectors);
if (fat32_len) {
fsi->num_FAT_sectors = fat32_len;
} else if (fsi->num_FAT_sectors) {
/* SPEC violation for compatibility */
sdfat_msg(sb, KERN_WARNING,
"no fatsz32, try with fatsz16: %u",
fsi->num_FAT_sectors);
}
}
if (!fsi->num_FAT_sectors) {
sdfat_msg(sb, KERN_ERR, "bogus fat size");
return -EINVAL;
}
if (!p_bpb->num_fats) {
sdfat_msg(sb, KERN_ERR, "bogus number of FAT structure");
return -EINVAL;
}
num_root_sectors = get_unaligned_le16(p_bpb->num_root_entries) << DENTRY_SIZE_BITS;
num_root_sectors = ((num_root_sectors-1) >> sb->s_blocksize_bits) + 1;
fsi->sect_per_clus = p_bpb->sect_per_clus;
fsi->sect_per_clus_bits = ilog2(p_bpb->sect_per_clus);
fsi->cluster_size_bits = fsi->sect_per_clus_bits + sb->s_blocksize_bits;
fsi->cluster_size = 1 << fsi->cluster_size_bits;
fsi->num_FAT_sectors = le16_to_cpu(p_bpb->num_fat_sectors);
if (p_bpb->num_fats > 2) {
sdfat_msg(sb, KERN_WARNING,
"unsupported number of FAT structure :%u, try with 2",
p_bpb->num_fats);
}
fsi->FAT1_start_sector = le16_to_cpu(p_bpb->num_reserved);
if (p_bpb->num_fats == 1)
fsi->FAT2_start_sector = fsi->FAT1_start_sector;
else
fsi->FAT2_start_sector = fsi->FAT1_start_sector + fsi->num_FAT_sectors;
fsi->FAT2_start_sector = fsi->FAT1_start_sector +
fsi->num_FAT_sectors;
fsi->root_start_sector = fsi->FAT2_start_sector + fsi->num_FAT_sectors;
fsi->data_start_sector = fsi->root_start_sector + num_root_sectors;
fsi->data_start_sector = fsi->root_start_sector + root_sects;
/* SPEC violation for compatibility */
fsi->num_sectors = get_unaligned_le16(p_bpb->num_sectors);
if (!fsi->num_sectors)
fsi->num_sectors = le32_to_cpu(p_bpb->num_huge_sectors);
@@ -1277,15 +1311,20 @@ s32 mount_fat16(struct super_block *sb, pbr_t *p_pbr)
return -EINVAL;
}
fsi->num_clusters = (u32)((fsi->num_sectors - fsi->data_start_sector) >> fsi->sect_per_clus_bits) + CLUS_BASE;
/* because the cluster index starts with 2 */
fsi->num_clusters = (u32)((fsi->num_sectors - fsi->data_start_sector) >>
fsi->sect_per_clus_bits) + CLUS_BASE;
fsi->vol_type = FAT16;
if (fsi->num_clusters < FAT12_THRESHOLD)
fsi->vol_type = FAT12;
return 0;
}
fsi->vol_id = get_unaligned_le32(p_bpb->vol_serial);
s32 mount_fat16(struct super_block *sb, pbr_t *p_pbr)
{
u32 num_root_sectors;
bpb_t *p_bpb = &(p_pbr->bpb.fat);
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
fsi->vol_id = get_unaligned_le32(p_bpb->f16.vol_serial);
fsi->root_dir = 0;
fsi->dentries_in_root = get_unaligned_le16(p_bpb->num_root_entries);
if (!fsi->dentries_in_root) {
@@ -1294,16 +1333,18 @@ s32 mount_fat16(struct super_block *sb, pbr_t *p_pbr)
return -EINVAL;
}
fsi->dentries_per_clu = 1 << (fsi->cluster_size_bits - DENTRY_SIZE_BITS);
num_root_sectors = fsi->dentries_in_root << DENTRY_SIZE_BITS;
num_root_sectors = ((num_root_sectors - 1) >> sb->s_blocksize_bits) + 1;
fsi->vol_flag = VOL_CLEAN;
fsi->clu_srch_ptr = 2;
fsi->used_clusters = (u32) ~0;
if (mount_fat_common(sb, fsi, p_bpb, num_root_sectors))
return -EINVAL;
fsi->fs_func = &fat_fs_func;
fsi->vol_type = FAT16;
if (fsi->num_clusters < FAT12_THRESHOLD)
fsi->vol_type = FAT12;
fat_ent_ops_init(sb);
if (p_bpb->state & FAT_VOL_DIRTY) {
if (p_bpb->f16.state & FAT_VOL_DIRTY) {
fsi->vol_flag |= VOL_DIRTY;
sdfat_log_msg(sb, KERN_WARNING, "Volume was not properly "
"unmounted. Some data may be corrupt. "
@@ -1347,67 +1388,26 @@ s32 mount_fat32(struct super_block *sb, pbr_t *p_pbr)
pbr32_t *p_bpb = (pbr32_t *)p_pbr;
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
if (!p_bpb->bpb.num_fats) {
sdfat_msg(sb, KERN_ERR, "bogus number of FAT structure");
return -EINVAL;
}
fsi->sect_per_clus = p_bpb->bpb.sect_per_clus;
fsi->sect_per_clus_bits = ilog2(p_bpb->bpb.sect_per_clus);
fsi->cluster_size_bits = fsi->sect_per_clus_bits + sb->s_blocksize_bits;
fsi->cluster_size = 1 << fsi->cluster_size_bits;
fsi->num_FAT_sectors = le32_to_cpu(p_bpb->bpb.num_fat32_sectors);
fsi->FAT1_start_sector = le16_to_cpu(p_bpb->bpb.num_reserved);
if (p_bpb->bpb.num_fats == 1)
fsi->FAT2_start_sector = fsi->FAT1_start_sector;
else
fsi->FAT2_start_sector = fsi->FAT1_start_sector + fsi->num_FAT_sectors;
fsi->root_start_sector = fsi->FAT2_start_sector + fsi->num_FAT_sectors;
fsi->data_start_sector = fsi->root_start_sector;
/* SPEC violation for compatibility */
fsi->num_sectors = get_unaligned_le16(p_bpb->bpb.num_sectors);
if (!fsi->num_sectors)
fsi->num_sectors = le32_to_cpu(p_bpb->bpb.num_huge_sectors);
/* 2nd check */
if (!fsi->num_sectors) {
sdfat_msg(sb, KERN_ERR, "bogus number of total sector count");
return -EINVAL;
}
fsi->num_clusters = (u32)((fsi->num_sectors - fsi->data_start_sector) >> fsi->sect_per_clus_bits) + CLUS_BASE;
/* because the cluster index starts with 2 */
fsi->vol_type = FAT32;
fsi->vol_id = get_unaligned_le32(p_bpb->bsx.vol_serial);
fsi->root_dir = le32_to_cpu(p_bpb->bpb.root_cluster);
fsi->root_dir = le32_to_cpu(p_bpb->bpb.f32.root_cluster);
fsi->dentries_in_root = 0;
fsi->dentries_per_clu = 1 << (fsi->cluster_size_bits - DENTRY_SIZE_BITS);
fsi->vol_flag = VOL_CLEAN;
fsi->clu_srch_ptr = 2;
fsi->used_clusters = (u32) ~0;
if (mount_fat_common(sb, fsi, &p_bpb->bpb, 0))
return -EINVAL;
fsi->fs_func = &fat_fs_func;
/* Should be initialized before calling amap_create() */
fsi->vol_type = FAT32;
fat_ent_ops_init(sb);
/* Delayed / smart allocation related init */
fsi->reserved_clusters = 0;
/* Should be initialized before calling amap_create() */
fat_ent_ops_init(sb);
/* AU Map Creation */
if (SDFAT_SB(sb)->options.improved_allocation & SDFAT_ALLOC_SMART) {
u32 hidden_sectors = le32_to_cpu(p_bpb->bpb.num_hid_sectors);
u32 calc_hid_sect = 0;
int ret;
/* calculate hidden sector size */
calc_hid_sect = __calc_hidden_sect(sb);
if (calc_hid_sect != hidden_sectors) {
-7
View File
@@ -355,13 +355,6 @@ static inline bool is_reserved_clus(u32 clus)
return false;
}
static inline bool is_valid_clus(FS_INFO_T *fsi, u32 clus)
{
if (clus < CLUS_BASE || fsi->num_clusters <= clus)
return false;
return true;
}
s32 fat_ent_get(struct super_block *sb, u32 loc, u32 *content)
{
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
+10 -15
View File
@@ -55,15 +55,6 @@
/*************************************************************************
* FUNCTIONS WHICH HAS KERNEL VERSION DEPENDENCY
*************************************************************************/
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0)
#define CURRENT_TIME_SEC timespec64_trunc(current_kernel_time64(), NSEC_PER_SEC)
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
#define CURRENT_TIME_SEC timespec_trunc(current_kernel_time(), NSEC_PER_SEC)
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) */
/* EMPTY */
#endif
#ifdef CONFIG_SDFAT_UEVENT
static struct kobject sdfat_uevent_kobj;
@@ -94,6 +85,10 @@ void sdfat_uevent_ro_remount(struct super_block *sb)
char major[16], minor[16];
char *envp[] = { major, minor, NULL };
/* Do not trigger uevent if a device has been ejected */
if (fsapi_check_bdi_valid(sb))
return;
snprintf(major, sizeof(major), "MAJOR=%d", MAJOR(bd_dev));
snprintf(minor, sizeof(minor), "MINOR=%d", MINOR(bd_dev));
@@ -127,7 +122,7 @@ void __sdfat_fs_error(struct super_block *sb, int report, const char *fmt, ...)
pr_err("[SDFAT](%s[%d:%d]):ERR: %pV\n",
sb->s_id, MAJOR(bd_dev), MINOR(bd_dev), &vaf);
#ifdef CONFIG_SDFAT_SUPPORT_STLOG
if (opts->errors == SDFAT_ERRORS_RO && !(sb->s_flags & MS_RDONLY)) {
if (opts->errors == SDFAT_ERRORS_RO && !sb_rdonly(sb)) {
ST_LOG("[SDFAT](%s[%d:%d]):ERR: %pV\n",
sb->s_id, MAJOR(bd_dev), MINOR(bd_dev), &vaf);
}
@@ -138,8 +133,8 @@ void __sdfat_fs_error(struct super_block *sb, int report, const char *fmt, ...)
if (opts->errors == SDFAT_ERRORS_PANIC) {
panic("[SDFAT](%s[%d:%d]): fs panic from previous error\n",
sb->s_id, MAJOR(bd_dev), MINOR(bd_dev));
} else if (opts->errors == SDFAT_ERRORS_RO && !(sb->s_flags & MS_RDONLY)) {
sb->s_flags |= MS_RDONLY;
} else if (opts->errors == SDFAT_ERRORS_RO && !sb_rdonly(sb)) {
sb->s_flags |= SB_RDONLY;
sdfat_statistics_set_mnt_ro();
pr_err("[SDFAT](%s[%d:%d]): Filesystem has been set "
"read-only\n", sb->s_id, MAJOR(bd_dev), MINOR(bd_dev));
@@ -333,12 +328,12 @@ void sdfat_time_unix2fat(struct sdfat_sb_info *sbi, sdfat_timespec_t *ts,
tp->Year = year;
}
TIMESTAMP_T *tm_now(struct sdfat_sb_info *sbi, TIMESTAMP_T *tp)
TIMESTAMP_T *tm_now(struct inode *inode, TIMESTAMP_T *tp)
{
sdfat_timespec_t ts = CURRENT_TIME_SEC;
sdfat_timespec_t ts = current_time(inode);
DATE_TIME_T dt;
sdfat_time_unix2fat(sbi, &ts, &dt);
sdfat_time_unix2fat(SDFAT_SB(inode->i_sb), &ts, &dt);
tp->year = dt.Year;
tp->mon = dt.Month;
+134 -43
View File
@@ -70,6 +70,9 @@
#ifdef CONFIG_SDFAT_ALIGNED_MPAGE_WRITE
#define MIN_ALIGNED_SIZE (PAGE_SIZE)
#define MIN_ALIGNED_SIZE_MASK (MIN_ALIGNED_SIZE - 1)
/*************************************************************************
* INNER FUNCTIONS FOR FUNCTIONS WHICH HAS KERNEL VERSION DEPENDENCY
*************************************************************************/
@@ -97,6 +100,14 @@ static inline void __sdfat_clean_bdev_aliases(struct block_device *bdev, sector_
{
unmap_underlying_metadata(bdev, block);
}
static inline int wbc_to_write_flags(struct writeback_control *wbc)
{
if (wbc->sync_mode == WB_SYNC_ALL)
return WRITE_SYNC;
return 0;
}
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
@@ -236,6 +247,9 @@ static inline unsigned int __calc_size_to_align(struct super_block *sb)
if (aligned && (max_sectors & (aligned - 1)))
aligned = 0;
if (aligned && aligned < (MIN_ALIGNED_SIZE >> SECTOR_SIZE_BITS))
aligned = 0;
out:
return aligned;
}
@@ -248,6 +262,24 @@ struct mpage_data {
unsigned int size_to_align;
};
/*
* After completing I/O on a page, call this routine to update the page
* flags appropriately
*/
static void __page_write_endio(struct page *page, int err)
{
if (err) {
struct address_space *mapping;
SetPageError(page);
mapping = page_mapping(page);
if (mapping)
mapping_set_error(mapping, err);
}
__dfr_writepage_end_io(page);
end_page_writeback(page);
}
/*
* I/O completion handler for multipage BIOs.
*
@@ -262,25 +294,37 @@ struct mpage_data {
*/
static void __mpage_write_end_io(struct bio *bio, int err)
{
struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1;
struct bio_vec *bv;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 2, 0)
struct bvec_iter_all iter_all;
ASSERT(bio_data_dir(bio) == WRITE); /* only write */
/* Use bio_for_each_segemnt_all() to support multi-page bvec */
bio_for_each_segment_all(bv, bio, iter_all)
__page_write_endio(bv->bv_page, err);
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
struct bvec_iter_all iter_all;
int i;
ASSERT(bio_data_dir(bio) == WRITE); /* only write */
/* Use bio_for_each_segemnt_all() to support multi-page bvec */
bio_for_each_segment_all(bv, bio, i, iter_all)
__page_write_endio(bv->bv_page, err);
#else
ASSERT(bio_data_dir(bio) == WRITE); /* only write */
bv = bio->bi_io_vec + bio->bi_vcnt - 1;
do {
struct page *page = bvec->bv_page;
struct page *page = bv->bv_page;
if (--bvec >= bio->bi_io_vec)
prefetchw(&bvec->bv_page->flags);
if (err) {
SetPageError(page);
if (page->mapping)
mapping_set_error(page->mapping, err);
}
if (--bv >= bio->bi_io_vec)
prefetchw(&bv->bv_page->flags);
__dfr_writepage_end_io(page);
end_page_writeback(page);
} while (bvec >= bio->bi_io_vec);
__page_write_endio(page, err);
} while (bv >= bio->bi_io_vec);
#endif
bio_put(bio);
}
@@ -312,6 +356,65 @@ mpage_alloc(struct block_device *bdev,
return bio;
}
#if IS_BUILTIN(CONFIG_SDFAT_FS)
#define __write_boundary_block write_boundary_block
#define sdfat_buffer_heads_over_limit buffer_heads_over_limit
#else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
/*
* Called when we've recently written block `bblock', and it is known that
* `bblock' was for a buffer_boundary() buffer. This means that the block at
* `bblock + 1' is probably a dirty indirect block. Hunt it down and, if it's
* dirty, schedule it for IO. So that indirects merge nicely with their data.
*/
static void __write_boundary_block(struct block_device *bdev,
sector_t bblock, unsigned int blocksize)
{
struct buffer_head *bh = __find_get_block(bdev, bblock + 1, blocksize);
if (bh) {
if (buffer_dirty(bh))
ll_rw_block(REQ_OP_WRITE, 0, 1, &bh);
put_bh(bh);
}
}
#else
#warning "Need an alternative of write_boundary_block function"
#define __write_boundary_block write_boundary_block
#endif
#warning "sdfat could not check buffer_heads_over_limit on module. Assumed zero"
#define sdfat_buffer_heads_over_limit (0)
#endif
static void clean_buffers(struct page *page, unsigned int first_unmapped)
{
unsigned int buffer_counter = 0;
struct buffer_head *bh, *head;
if (!page_has_buffers(page))
return;
head = page_buffers(page);
bh = head;
do {
if (buffer_counter++ == first_unmapped)
break;
clear_buffer_dirty(bh);
bh = bh->b_this_page;
} while (bh != head);
/*
* we cannot drop the bh if the page is not uptodate or a concurrent
* readpage would fail to serialize with the bh and it would read from
* disk before we reach the platter.
*/
if (sdfat_buffer_heads_over_limit && PageUptodate(page))
try_to_free_buffers(page);
}
static int sdfat_mpage_writepage(struct page *page,
struct writeback_control *wbc, void *data)
{
@@ -335,6 +438,7 @@ static int sdfat_mpage_writepage(struct page *page,
loff_t i_size = i_size_read(inode);
unsigned long end_index = i_size >> PAGE_SHIFT;
int ret = 0;
int op_flags = wbc_to_write_flags(wbc);
if (page_has_buffers(page)) {
struct buffer_head *head = page_buffers(page);
@@ -490,22 +594,25 @@ page_is_mapped:
*/
if (bio) {
if (mpd->last_block_in_bio != blocks[0] - 1) {
bio = mpage_bio_submit_write(0, bio);
bio = mpage_bio_submit_write(op_flags, bio);
} else if (mpd->size_to_align) {
unsigned int mask = mpd->size_to_align - 1;
sector_t max_end_block =
(__sdfat_bio_sector(bio) & ~(mask)) + mask;
if ((__sdfat_bio_size(bio) != (1 << (mask + 1))) &&
if ((__sdfat_bio_size(bio) & MIN_ALIGNED_SIZE_MASK) &&
(mpd->last_block_in_bio == max_end_block)) {
int op_nomerge = op_flags | REQ_NOMERGE;
MMSG("%s(inode:%p) alignment mpage_bio_submit"
"(start:%u, len:%u aligned:%u)\n",
"(start:%u, len:%u size:%u aligned:%u)\n",
__func__, inode,
(unsigned int)__sdfat_bio_sector(bio),
(unsigned int)(mpd->last_block_in_bio -
__sdfat_bio_sector(bio) + 1),
(unsigned int)__sdfat_bio_size(bio),
(unsigned int)mpd->size_to_align);
bio = mpage_bio_submit_write(REQ_NOMERGE, bio);
bio = mpage_bio_submit_write(op_nomerge, bio);
}
}
}
@@ -525,7 +632,7 @@ alloc_new:
*/
length = first_unmapped << blkbits;
if (bio_add_page(bio, page, length, 0) < length) {
bio = mpage_bio_submit_write(0, bio);
bio = mpage_bio_submit_write(op_flags, bio);
goto alloc_new;
}
@@ -533,26 +640,7 @@ alloc_new:
* OK, we have our BIO, so we can now mark the buffers clean. Make
* sure to only clean buffers which we know we'll be writing.
*/
if (page_has_buffers(page)) {
struct buffer_head *head = page_buffers(page);
struct buffer_head *bh = head;
unsigned int buffer_counter = 0;
do {
if (buffer_counter++ == first_unmapped)
break;
clear_buffer_dirty(bh);
bh = bh->b_this_page;
} while (bh != head);
/*
* we cannot drop the bh if the page is not uptodate
* or a concurrent readpage would fail to serialize with the bh
* and it would read from disk before we reach the platter.
*/
if (buffer_heads_over_limit && PageUptodate(page))
try_to_free_buffers(page);
}
clean_buffers(page, first_unmapped);
BUG_ON(PageWriteback(page));
set_page_writeback(page);
@@ -579,9 +667,9 @@ alloc_new:
unlock_page(page);
if (boundary || (first_unmapped != blocks_per_page)) {
bio = mpage_bio_submit_write(0, bio);
bio = mpage_bio_submit_write(op_flags, bio);
if (boundary_block) {
write_boundary_block(boundary_bdev,
__write_boundary_block(boundary_bdev,
boundary_block, 1 << blkbits);
}
} else {
@@ -592,7 +680,7 @@ alloc_new:
confused:
if (bio)
bio = mpage_bio_submit_write(0, bio);
bio = mpage_bio_submit_write(op_flags, bio);
if (mpd->use_writepage) {
ret = mapping->a_ops->writepage(page, wbc);
@@ -625,8 +713,11 @@ int sdfat_mpage_writepages(struct address_space *mapping,
BUG_ON(!get_block);
blk_start_plug(&plug);
ret = write_cache_pages(mapping, wbc, sdfat_mpage_writepage, &mpd);
if (mpd.bio)
mpage_bio_submit_write(0, mpd.bio);
if (mpd.bio) {
int op_flags = wbc_to_write_flags(wbc);
mpage_bio_submit_write(op_flags, mpd.bio);
}
blk_finish_plug(&plug);
return ret;
}
+155 -58
View File
@@ -190,6 +190,14 @@ static inline void __sdfat_clean_bdev_aliases(struct block_device *bdev, sector_
{
unmap_underlying_metadata(bdev, block);
}
static inline int wbc_to_write_flags(struct writeback_control *wbc)
{
if (wbc->sync_mode == WB_SYNC_ALL)
return WRITE_SYNC;
return 0;
}
#endif
@@ -224,9 +232,12 @@ static int setattr_prepare(struct dentry *dentry, struct iattr *attr)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
static inline void __sdfat_submit_bio_write(struct bio *bio)
static inline void __sdfat_submit_bio_write(struct bio *bio,
struct writeback_control *wbc)
{
bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
int write_flags = wbc_to_write_flags(wbc);
bio_set_op_attrs(bio, REQ_OP_WRITE, write_flags);
submit_bio(bio);
}
@@ -240,9 +251,12 @@ static inline unsigned long __sdfat_init_name_hash(const struct dentry *dentry)
return init_name_hash(dentry);
}
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0) */
static inline void __sdfat_submit_bio_write(struct bio *bio)
static inline void __sdfat_submit_bio_write(struct bio *bio,
struct writeback_control *wbc)
{
submit_bio(WRITE, bio);
int write_flags = wbc_to_write_flags(wbc);
submit_bio(WRITE | write_flags, bio);
}
static inline unsigned int __sdfat_full_name_hash(const struct dentry *unused, const char *name, unsigned int len)
@@ -289,6 +303,15 @@ static inline int sdfat_remount_syncfs(struct super_block *sb)
}
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
/* EMPTY */
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) */
static inline void truncate_inode_pages_final(struct address_space *mapping)
{
truncate_inode_pages(mapping, 0);
}
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)
static inline sector_t __sdfat_bio_sector(struct bio *bio)
@@ -865,15 +888,6 @@ static int sdfat_file_fsync(struct file *filp, int datasync)
/*************************************************************************
* MORE FUNCTIONS WHICH HAS KERNEL VERSION DEPENDENCY
*************************************************************************/
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0)
#define CURRENT_TIME_SEC timespec64_trunc(current_kernel_time64(), NSEC_PER_SEC)
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
#define CURRENT_TIME_SEC timespec_trunc(current_kernel_time(), NSEC_PER_SEC)
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) */
/* EMPTY */
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
static void sdfat_writepage_end_io(struct bio *bio)
{
@@ -2147,7 +2161,7 @@ static int sdfat_dfr_ioctl(struct inode *inode, struct file *filp,
__lock_super(sb);
/* Check if FS_ERROR occurred */
if (sb->s_flags & MS_RDONLY) {
if (sb_rdonly(sb)) {
dfr_err("RDONLY partition (err %d)", -EPERM);
__unlock_super(sb);
return -EPERM;
@@ -2358,7 +2372,7 @@ static int __sdfat_create(struct inode *dir, struct dentry *dentry)
TMSG("%s entered\n", __func__);
ts = CURRENT_TIME_SEC;
ts = current_time(dir);
err = fsapi_create(dir, (u8 *) dentry->d_name.name, FM_REGULAR, &fid);
if (err)
@@ -2521,7 +2535,7 @@ static int sdfat_unlink(struct inode *dir, struct dentry *dentry)
TMSG("%s entered\n", __func__);
ts = CURRENT_TIME_SEC;
ts = current_time(dir);
SDFAT_I(inode)->fid.size = i_size_read(inode);
@@ -2570,7 +2584,7 @@ static int sdfat_symlink(struct inode *dir, struct dentry *dentry, const char *t
TMSG("%s entered\n", __func__);
ts = CURRENT_TIME_SEC;
ts = current_time(dir);
err = fsapi_create(dir, (u8 *) dentry->d_name.name, FM_SYMLINK, &fid);
if (err)
@@ -2631,7 +2645,7 @@ static int __sdfat_mkdir(struct inode *dir, struct dentry *dentry)
TMSG("%s entered\n", __func__);
ts = CURRENT_TIME_SEC;
ts = current_time(dir);
err = fsapi_mkdir(dir, (u8 *) dentry->d_name.name, &fid);
if (err)
@@ -2680,7 +2694,7 @@ static int sdfat_rmdir(struct inode *dir, struct dentry *dentry)
TMSG("%s entered\n", __func__);
ts = CURRENT_TIME_SEC;
ts = current_time(dir);
SDFAT_I(inode)->fid.size = i_size_read(inode);
@@ -2725,7 +2739,7 @@ static int __sdfat_rename(struct inode *old_dir, struct dentry *old_dentry,
old_inode = old_dentry->d_inode;
new_inode = new_dentry->d_inode;
ts = CURRENT_TIME_SEC;
ts = current_time(old_inode);
SDFAT_I(old_inode)->fid.size = i_size_read(old_inode);
@@ -2803,7 +2817,7 @@ static int sdfat_cont_expand(struct inode *inode, loff_t size)
if (err)
return err;
inode->i_ctime = inode->i_mtime = CURRENT_TIME_SEC;
inode->i_ctime = inode->i_mtime = current_time(inode);
mark_inode_dirty(inode);
if (!IS_SYNC(inode))
@@ -3061,7 +3075,7 @@ static void sdfat_truncate(struct inode *inode, loff_t old_size)
if (err)
goto out;
inode->i_ctime = inode->i_mtime = CURRENT_TIME_SEC;
inode->i_ctime = inode->i_mtime = current_time(inode);
if (IS_DIRSYNC(inode))
(void) sdfat_sync_inode(inode);
else
@@ -3489,7 +3503,8 @@ static int sdfat_readpages(struct file *file, struct address_space *mapping,
}
static inline void sdfat_submit_fullpage_bio(struct block_device *bdev,
sector_t sector, unsigned int length, struct page *page)
sector_t sector, unsigned int length,
struct page *page, struct writeback_control *wbc)
{
/* Single page bio submit */
struct bio *bio;
@@ -3513,7 +3528,7 @@ static inline void sdfat_submit_fullpage_bio(struct block_device *bdev,
__sdfat_set_bio_iterate(bio, sector, length, 0, 0);
bio->bi_end_io = sdfat_writepage_end_io;
__sdfat_submit_bio_write(bio);
__sdfat_submit_bio_write(bio, wbc);
}
static int sdfat_writepage(struct page *page, struct writeback_control *wbc)
@@ -3648,7 +3663,7 @@ static int sdfat_writepage(struct page *page, struct writeback_control *wbc)
sdfat_submit_fullpage_bio(head->b_bdev,
head->b_blocknr << (sb->s_blocksize_bits - SECTOR_SIZE_BITS),
nr_blocks_towrite << inode->i_blkbits,
page);
page, wbc);
unlock_page(page);
@@ -3713,7 +3728,7 @@ static int sdfat_check_writable(struct super_block *sb)
if (fsapi_check_bdi_valid(sb))
return -EIO;
if (sb->s_flags & MS_RDONLY)
if (sb_rdonly(sb))
return -EROFS;
return 0;
@@ -3788,7 +3803,7 @@ static int sdfat_write_end(struct file *file, struct address_space *mapping,
sdfat_write_failed(mapping, pos+len);
if (!(err < 0) && !(fid->attr & ATTR_ARCHIVE)) {
inode->i_mtime = inode->i_ctime = CURRENT_TIME_SEC;
inode->i_mtime = inode->i_ctime = current_time(inode);
fid->attr |= ATTR_ARCHIVE;
mark_inode_dirty(inode);
}
@@ -4000,7 +4015,7 @@ static struct inode *sdfat_alloc_inode(struct super_block *sb)
return &ei->vfs_inode;
}
static void sdfat_destroy_inode(struct inode *inode)
static void sdfat_free_inode(struct inode *inode)
{
if (SDFAT_I(inode)->target) {
kfree(SDFAT_I(inode)->target);
@@ -4010,6 +4025,28 @@ static void sdfat_destroy_inode(struct inode *inode)
kmem_cache_free(sdfat_inode_cachep, SDFAT_I(inode));
}
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)
/* Use free_inode instead of destroy_inode */
#define sdfat_destroy_inode (NULL)
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
static void sdfat_i_callback(struct rcu_head *head)
{
struct inode *inode = container_of(head, struct inode, i_rcu);
sdfat_free_inode(inode);
}
static void sdfat_destroy_inode(struct inode *inode)
{
call_rcu(&inode->i_rcu, sdfat_i_callback);
}
#else
static void sdfat_destroy_inode(struct inode *inode)
{
sdfat_free_inode(inode);
}
#endif
static int __sdfat_write_inode(struct inode *inode, int sync)
{
struct super_block *sb = inode->i_sb;
@@ -4045,7 +4082,7 @@ static int sdfat_write_inode(struct inode *inode, struct writeback_control *wbc)
static void sdfat_evict_inode(struct inode *inode)
{
truncate_inode_pages(&inode->i_data, 0);
truncate_inode_pages_final(&inode->i_data);
if (!inode->i_nlink) {
loff_t old_size = i_size_read(inode);
@@ -4073,7 +4110,62 @@ static void sdfat_evict_inode(struct inode *inode)
/* remove_inode_hash(inode); */
}
static void sdfat_free_sb_info(struct sdfat_sb_info *sbi)
{
if (sbi->nls_disk) {
unload_nls(sbi->nls_disk);
sbi->nls_disk = NULL;
sbi->options.codepage = sdfat_default_codepage;
}
if (sbi->nls_io) {
unload_nls(sbi->nls_io);
sbi->nls_io = NULL;
}
if (sbi->options.iocharset != sdfat_default_iocharset) {
kfree(sbi->options.iocharset);
sbi->options.iocharset = sdfat_default_iocharset;
}
if (sbi->use_vmalloc) {
vfree(sbi);
return;
}
kfree(sbi);
}
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
static void delayed_free(struct rcu_head *p)
{
struct sdfat_sb_info *sbi = container_of(p, struct sdfat_sb_info, rcu);
sdfat_free_sb_info(sbi);
}
static void __sdfat_destroy_sb_info(struct super_block *sb)
{
struct sdfat_sb_info *sbi = SDFAT_SB(sb);
call_rcu(&sbi->rcu, delayed_free);
}
#else
static void __sdfat_destroy_sb_info(struct super_block *sb)
{
struct sdfat_sb_info *sbi = SDFAT_SB(sb);
sdfat_free_sb_info(sbi);
sb->s_fs_info = NULL;
}
#endif
static void sdfat_destroy_sb_info(struct super_block *sb)
{
struct sdfat_sb_info *sbi = SDFAT_SB(sb);
kobject_del(&sbi->sb_kobj);
kobject_put(&sbi->sb_kobj);
__sdfat_destroy_sb_info(sb);
}
static void sdfat_put_super(struct super_block *sb)
{
@@ -4090,28 +4182,7 @@ static void sdfat_put_super(struct super_block *sb)
__free_dfr_mem_if_required(sb);
err = fsapi_umount(sb);
if (sbi->nls_disk) {
unload_nls(sbi->nls_disk);
sbi->nls_disk = NULL;
sbi->options.codepage = sdfat_default_codepage;
}
if (sbi->nls_io) {
unload_nls(sbi->nls_io);
sbi->nls_io = NULL;
}
if (sbi->options.iocharset != sdfat_default_iocharset) {
kfree(sbi->options.iocharset);
sbi->options.iocharset = sdfat_default_iocharset;
}
sb->s_fs_info = NULL;
kobject_del(&sbi->sb_kobj);
kobject_put(&sbi->sb_kobj);
if (!sbi->use_vmalloc)
kfree(sbi);
else
vfree(sbi);
sdfat_destroy_sb_info(sb);
sdfat_log_msg(sb, KERN_INFO, "unmounted successfully! %s",
err ? "(with previous I/O errors)" : "");
@@ -4142,7 +4213,7 @@ static void sdfat_write_super(struct super_block *sb)
/* flush delayed FAT/DIR dirty */
__flush_delayed_meta(sb, 0);
if (!(sb->s_flags & MS_RDONLY))
if (!sb_rdonly(sb))
fsapi_sync_fs(sb, 0);
__unlock_super(sb);
@@ -4270,7 +4341,8 @@ static int sdfat_statfs(struct dentry *dentry, struct kstatfs *buf)
buf->f_bavail = info.FreeClusters;
buf->f_fsid.val[0] = (u32)id;
buf->f_fsid.val[1] = (u32)(id >> 32);
buf->f_namelen = 260;
/* Unicode utf8 255 characters */
buf->f_namelen = MAX_NAME_LENGTH * MAX_CHARSET_SIZE;
return 0;
}
@@ -4282,7 +4354,7 @@ static int sdfat_remount(struct super_block *sb, int *flags, char *data)
struct sdfat_sb_info *sbi = SDFAT_SB(sb);
FS_INFO_T *fsi = &(sbi->fsi);
*flags |= MS_NODIRATIME;
*flags |= SB_NODIRATIME;
prev_sb_flags = sb->s_flags;
@@ -4291,8 +4363,8 @@ static int sdfat_remount(struct super_block *sb, int *flags, char *data)
fsapi_set_vol_flags(sb, VOL_CLEAN, 1);
sdfat_log_msg(sb, KERN_INFO, "re-mounted(%s->%s), eio=0x%x, Opts: %s",
(prev_sb_flags & MS_RDONLY) ? "ro" : "rw",
(*flags & MS_RDONLY) ? "ro" : "rw",
(prev_sb_flags & SB_RDONLY) ? "ro" : "rw",
(*flags & SB_RDONLY) ? "ro" : "rw",
fsi->prev_eio, orig_data);
kfree(orig_data);
return 0;
@@ -4355,7 +4427,11 @@ static int __sdfat_show_options(struct seq_file *m, struct super_block *sb)
static const struct super_operations sdfat_sops = {
.alloc_inode = sdfat_alloc_inode,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)
.free_inode = sdfat_free_inode,
#else
.destroy_inode = sdfat_destroy_inode,
#endif
.write_inode = sdfat_write_inode,
.evict_inode = sdfat_evict_inode,
.put_super = sdfat_put_super,
@@ -4798,7 +4874,7 @@ static int sdfat_read_root(struct inode *inode)
FS_INFO_T *fsi = &(sbi->fsi);
DIR_ENTRY_T info;
ts = CURRENT_TIME_SEC;
ts = current_time(inode);
SDFAT_I(inode)->fid.dir.dir = fsi->root_dir;
SDFAT_I(inode)->fid.dir.flags = 0x01;
@@ -4882,11 +4958,18 @@ static int sdfat_fill_super(struct super_block *sb, void *data, int silent)
mutex_init(&sbi->s_vlock);
sb->s_fs_info = sbi;
sb->s_flags |= MS_NODIRATIME;
sb->s_flags |= SB_NODIRATIME;
sb->s_magic = SDFAT_SUPER_MAGIC;
sb->s_op = &sdfat_sops;
ratelimit_state_init(&sbi->ratelimit, DEFAULT_RATELIMIT_INTERVAL,
DEFAULT_RATELIMIT_BURST);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
sb->s_time_gran = NSEC_PER_SEC; /* the same with default */
sb->s_time_min = SDFAT_MIN_TIMESTAMP_SECS;
sb->s_time_max = SDFAT_MAX_TIMESTAMP_SECS;
#endif
err = parse_options(sb, data, silent, &debug, &sbi->options);
if (err) {
sdfat_log_msg(sb, KERN_ERR, "failed to parse options");
@@ -5033,6 +5116,13 @@ static int __init sdfat_init_inodecache(void)
static void sdfat_destroy_inodecache(void)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
/*
* Make sure all delayed rcu free inodes are flushed before we
* destroy cache.
*/
rcu_barrier();
#endif
kmem_cache_destroy(sdfat_inode_cachep);
}
@@ -5181,6 +5271,13 @@ error:
static void __exit exit_sdfat_fs(void)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
/*
* Make sure all delayed rcu free inodes are flushed before we
* destroy cache.
*/
rcu_barrier();
#endif
sdfat_uevent_uninit();
sdfat_statistics_uninit();
+35 -1
View File
@@ -142,6 +142,9 @@ struct sdfat_sb_info {
struct mutex s_vlock; /* volume lock */
int use_vmalloc;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
struct rcu_head rcu;
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0)
int s_dirt;
struct mutex s_lock; /* superblock lock */
@@ -215,6 +218,30 @@ typedef struct timespec64 sdfat_timespec_t;
typedef struct timespec sdfat_timespec_t;
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) */
/*
* sb->s_flags. Note that these mirror the equivalent MS_* flags where
* represented in both.
*/
#define SB_RDONLY 1 /* Mount read-only */
#define SB_NODIRATIME 2048 /* Do not update directory access times */
static inline bool sb_rdonly(const struct super_block *sb)
{
return sb->s_flags & MS_RDONLY;
}
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
/* EMPTY */
#else
static inline sdfat_timespec_t current_time(struct inode *inode)
{
return CURRENT_TIME_SEC;
}
#endif
/*
* FIXME : needs on-disk-slot in-memory data
*/
@@ -387,7 +414,14 @@ extern void sdfat_time_fat2unix(struct sdfat_sb_info *sbi, sdfat_timespec_t *ts,
DATE_TIME_T *tp);
extern void sdfat_time_unix2fat(struct sdfat_sb_info *sbi, sdfat_timespec_t *ts,
DATE_TIME_T *tp);
extern TIMESTAMP_T *tm_now(struct sdfat_sb_info *sbi, TIMESTAMP_T *tm);
extern TIMESTAMP_T *tm_now(struct inode *inode, TIMESTAMP_T *tm);
static inline TIMESTAMP_T *tm_now_sb(struct super_block *sb, TIMESTAMP_T *tm)
{
struct inode fake_inode;
fake_inode.i_sb = sb;
return tm_now(&fake_inode, tm);
}
#ifdef CONFIG_SDFAT_DEBUG
+32 -39
View File
@@ -145,6 +145,13 @@
#define CS_PBR_SECTOR 1
#define CS_DEFAULT 2
/* time min/max */
/* Jan 1 GMT 00:00:00 1980 */
#define SDFAT_MIN_TIMESTAMP_SECS 315532800LL
/* Dec 31 GMT 23:59:59 2107 */
#define SDFAT_MAX_TIMESTAMP_SECS 4354819199LL
/*
* ioctl command
*/
@@ -179,7 +186,7 @@
/* On-Disk Type Definitions */
/*----------------------------------------------------------------------*/
/* FAT12/16 BIOS parameter block (64 bytes) */
/* FAT12/16/32 BIOS parameter block (64 bytes) */
typedef struct {
__u8 jmp_boot[3];
__u8 oem_name[8];
@@ -197,41 +204,28 @@ typedef struct {
__le32 num_hid_sectors; /* . */
__le32 num_huge_sectors;
__u8 phy_drv_no;
__u8 state; /* used by WindowsNT for mount state */
__u8 ext_signature;
__u8 vol_serial[4];
__u8 vol_label[11];
__u8 vol_type[8];
__le16 dummy;
} bpb16_t;
union {
struct {
__u8 phy_drv_no;
__u8 state; /* used by WinNT for mount state */
__u8 ext_signature;
__u8 vol_serial[4];
__u8 vol_label[11];
__u8 vol_type[8];
__le16 nouse;
} f16;
/* FAT32 BIOS parameter block (64 bytes) */
typedef struct {
__u8 jmp_boot[3];
__u8 oem_name[8];
__u8 sect_size[2]; /* unaligned */
__u8 sect_per_clus;
__le16 num_reserved;
__u8 num_fats;
__u8 num_root_entries[2]; /* unaligned */
__u8 num_sectors[2]; /* unaligned */
__u8 media_type;
__le16 num_fat_sectors; /* zero */
__le16 sectors_in_track;
__le16 num_heads;
__le32 num_hid_sectors; /* . */
__le32 num_huge_sectors;
__le32 num_fat32_sectors;
__le16 ext_flags;
__u8 fs_version[2];
__le32 root_cluster; /* . */
__le16 fsinfo_sector;
__le16 backup_sector;
__le16 reserved[6]; /* . */
} bpb32_t;
struct {
__le32 num_fat32_sectors;
__le16 ext_flags;
__u8 fs_version[2];
__le32 root_cluster; /* . */
__le16 fsinfo_sector;
__le16 backup_sector;
__le16 reserved[6]; /* . */
} f32;
};
} bpb_t;
/* FAT32 EXTEND BIOS parameter block (32 bytes) */
typedef struct {
@@ -273,12 +267,12 @@ typedef struct {
/* FAT32 PBR (64 bytes) */
typedef struct {
bpb16_t bpb;
bpb_t bpb;
} pbr16_t;
/* FAT32 PBR[BPB+BSX] (96 bytes) */
typedef struct {
bpb32_t bpb;
bpb_t bpb;
bsx32_t bsx;
} pbr32_t;
@@ -292,8 +286,7 @@ typedef struct {
typedef struct {
union {
__u8 raw[64];
bpb16_t f16;
bpb32_t f32;
bpb_t fat;
bpb64_t f64;
} bpb;
union {
+1 -1
View File
@@ -22,4 +22,4 @@
/* PURPOSE : sdFAT File Manager */
/* */
/************************************************************************/
#define SDFAT_VERSION "2.3.0-lineage"
#define SDFAT_VERSION "2.4.5-lineage"
+10
View File
@@ -79,12 +79,22 @@ ssize_t __sdfat_getxattr(const char *name, void *value, size_t size)
* FUNCTIONS WHICH HAS KERNEL VERSION DEPENDENCY
*************************************************************************/
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
#if defined(CONFIG_ANDROID) && (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0))
static int sdfat_xattr_get(const struct xattr_handler *handler,
struct dentry *dentry, struct inode *inode,
const char *name, void *buffer, size_t size,
int flags)
{
return __sdfat_getxattr(name, buffer, size);
}
#else
static int sdfat_xattr_get(const struct xattr_handler *handler,
struct dentry *dentry, struct inode *inode,
const char *name, void *buffer, size_t size)
{
return __sdfat_getxattr(name, buffer, size);
}
#endif
static int sdfat_xattr_set(const struct xattr_handler *handler,
struct dentry *dentry, struct inode *inode,
@@ -18,7 +18,9 @@
#ifndef __MAX17050_FUELGAUGE_H
#define __MAX17050_FUELGAUGE_H __FILE__
#if defined(ANDROID_ALARM_ACTIVATED)
#include <linux/android_alarm.h>
#endif
#if defined(CONFIG_MACH_LT03SKT) || defined(CONFIG_MACH_LT03KTT) || \
defined(CONFIG_MACH_LT03LGT) || defined(CONFIG_MACH_MONDRIAN)
+8
View File
@@ -42,6 +42,14 @@ struct sec_battery_extcon_cable{
#define TEMP_HIGHLIMIT_DEFAULT 2000
#if defined(CONFIG_CHARGING_VZWCONCEPT)
#define STORE_MODE_CHARGING_MAX 35
#define STORE_MODE_CHARGING_MIN 30
#else
#define STORE_MODE_CHARGING_MAX 70
#define STORE_MODE_CHARGING_MIN 60
#endif
struct adc_sample_info {
unsigned int cnt;
int total_adc;
+1
View File
@@ -1096,6 +1096,7 @@ struct file_handle {
};
#define get_file(x) atomic_long_inc(&(x)->f_count)
#define get_file_rcu(x) atomic_long_inc_not_zero(&(x)->f_count)
#define fput_atomic(x) atomic_long_add_unless(&(x)->f_count, -1, 1)
#define file_count(x) atomic_long_read(&(x)->f_count)
+29 -13
View File
@@ -771,34 +771,49 @@ const struct hid_device_id *hid_match_id(struct hid_device *hdev,
* @max: maximal valid usage->code to consider later (out parameter)
* @type: input event type (EV_KEY, EV_REL, ...)
* @c: code which corresponds to this usage and type
*
* The value pointed to by @bit will be set to NULL if either @type is
* an unhandled event type, or if @c is out of range for @type. This
* can be used as an error condition.
*/
static inline void hid_map_usage(struct hid_input *hidinput,
struct hid_usage *usage, unsigned long **bit, int *max,
__u8 type, __u16 c)
__u8 type, unsigned int c)
{
struct input_dev *input = hidinput->input;
usage->type = type;
usage->code = c;
unsigned long *bmap = NULL;
unsigned int limit = 0;
switch (type) {
case EV_ABS:
*bit = input->absbit;
*max = ABS_MAX;
bmap = input->absbit;
limit = ABS_MAX;
break;
case EV_REL:
*bit = input->relbit;
*max = REL_MAX;
bmap = input->relbit;
limit = REL_MAX;
break;
case EV_KEY:
*bit = input->keybit;
*max = KEY_MAX;
bmap = input->keybit;
limit = KEY_MAX;
break;
case EV_LED:
*bit = input->ledbit;
*max = LED_MAX;
bmap = input->ledbit;
limit = LED_MAX;
break;
}
if (unlikely(c > limit || !bmap)) {
pr_warn_ratelimited("%s: Invalid code %d type %d\n",
input->name, c, type);
*bit = NULL;
return;
}
usage->type = type;
usage->code = c;
*max = limit;
*bit = bmap;
}
/**
@@ -812,7 +827,8 @@ static inline void hid_map_usage_clear(struct hid_input *hidinput,
__u8 type, __u16 c)
{
hid_map_usage(hidinput, usage, bit, max, type, c);
clear_bit(c, *bit);
if (*bit)
clear_bit(usage->code, *bit);
}
/**
-6
View File
@@ -438,12 +438,6 @@ extern void hrtimer_run_pending(void);
/* Bootup initialization: */
extern void __init hrtimers_init(void);
#if BITS_PER_LONG < 64
extern u64 ktime_divns(const ktime_t kt, s64 div);
#else /* BITS_PER_LONG < 64 */
# define ktime_divns(kt, div) (u64)((kt).tv64 / (div))
#endif
/* Show pending timers: */
extern void sysrq_timer_list_show(void);
+33 -4
View File
@@ -301,16 +301,45 @@ static inline int ktime_compare(const ktime_t cmp1, const ktime_t cmp2)
return 0;
}
#if BITS_PER_LONG < 64
extern s64 __ktime_divns(const ktime_t kt, s64 div);
static inline s64 ktime_divns(const ktime_t kt, s64 div)
{
/*
* Negative divisors could cause an inf loop,
* so bug out here.
*/
BUG_ON(div < 0);
if (__builtin_constant_p(div) && !(div >> 32)) {
s64 ns = kt.tv64;
u64 tmp = ns < 0 ? -ns : ns;
do_div(tmp, div);
return ns < 0 ? -tmp : tmp;
} else {
return __ktime_divns(kt, div);
}
}
#else /* BITS_PER_LONG < 64 */
static inline s64 ktime_divns(const ktime_t kt, s64 div)
{
/*
* 32-bit implementation cannot handle negative divisors,
* so catch them on 64bit as well.
*/
WARN_ON(div < 0);
return kt.tv64 / div;
}
#endif
static inline s64 ktime_to_us(const ktime_t kt)
{
struct timeval tv = ktime_to_timeval(kt);
return (s64) tv.tv_sec * USEC_PER_SEC + tv.tv_usec;
return ktime_divns(kt, NSEC_PER_USEC);
}
static inline s64 ktime_to_ms(const ktime_t kt)
{
struct timeval tv = ktime_to_timeval(kt);
return (s64) tv.tv_sec * MSEC_PER_SEC + tv.tv_usec / USEC_PER_MSEC;
return ktime_divns(kt, NSEC_PER_MSEC);
}
static inline s64 ktime_us_delta(const ktime_t later, const ktime_t earlier)
+1 -1
View File
@@ -382,7 +382,7 @@ struct mm_struct {
#endif
/* store ref to file /proc/<pid>/exe symlink points to */
struct file *exe_file;
struct file __rcu *exe_file;
unsigned long num_exe_file_vmas;
#ifdef CONFIG_MMU_NOTIFIER
struct mmu_notifier_mm *mmu_notifier_mm;
+4 -2
View File
@@ -107,12 +107,14 @@ struct shmid_kernel /* private to the kernel */
#define SHM_NORESERVE 010000 /* don't check for reservations */
#ifdef CONFIG_SYSVIPC
long do_shmat(int shmid, char __user *shmaddr, int shmflg, unsigned long *addr);
long do_shmat(int shmid, char __user *shmaddr, int shmflg, unsigned long *addr,
unsigned long shmlba);
extern int is_file_shm_hugepages(struct file *file);
extern void exit_shm(struct task_struct *task);
#else
static inline long do_shmat(int shmid, char __user *shmaddr,
int shmflg, unsigned long *addr)
int shmflg, unsigned long *addr,
unsigned long shmlba)
{
return -ENOSYS;
}
+3 -1
View File
@@ -89,7 +89,8 @@ static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
__u32 mark, __u8 tos, __u8 scope,
__u8 proto, __u8 flags,
__be32 daddr, __be32 saddr,
__be16 dport, __be16 sport)
__be16 dport, __be16 sport,
kuid_t uid)
{
fl4->flowi4_oif = oif;
fl4->flowi4_iif = LOOPBACK_IFINDEX;
@@ -99,6 +100,7 @@ static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
fl4->flowi4_proto = proto;
fl4->flowi4_flags = flags;
fl4->flowi4_secid = 0;
fl4->flowi4_uid = uid;
fl4->daddr = daddr;
fl4->saddr = saddr;
fl4->fl4_dport = dport;
+1
View File
@@ -169,6 +169,7 @@ struct ip_reply_arg {
/* -1 if not needed */
int bound_dev_if;
u8 tos;
kuid_t uid;
};
#define IP_REPLY_ARG_NOSRCCHECK 1
+4 -4
View File
@@ -136,10 +136,10 @@ extern void rt6_redirect(const struct in6_addr *dest,
u8 *lladdr,
int on_link);
extern void rt6_pmtu_discovery(const struct in6_addr *daddr,
const struct in6_addr *saddr,
struct net_device *dev,
u32 pmtu);
extern void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu,
int oif, u32 mark, kuid_t uid);
extern void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk,
__be32 mtu);
struct netlink_callback;
+3 -2
View File
@@ -146,7 +146,7 @@ static inline struct rtable *ip_route_output_ports(struct net *net, struct flowi
flowi4_init_output(fl4, oif, sk ? sk->sk_mark : 0, tos,
RT_SCOPE_UNIVERSE, proto,
sk ? inet_sk_flowi_flags(sk) : 0,
daddr, saddr, dport, sport);
daddr, saddr, dport, sport, sock_net_uid(net, sk));
if (sk)
security_sk_classify_flow(sk, flowi4_to_flowi(fl4));
return ip_route_output_flow(net, fl4, sk);
@@ -250,7 +250,8 @@ static inline void ip_route_connect_init(struct flowi4 *fl4, __be32 dst, __be32
flow_flags |= FLOWI_FLAG_CAN_SLEEP;
flowi4_init_output(fl4, oif, sk->sk_mark, tos, RT_SCOPE_UNIVERSE,
protocol, flow_flags, dst, src, dport, sport);
protocol, flow_flags, dst, src, dport, sport,
sk->sk_uid);
}
static inline struct rtable *ip_route_connect(struct flowi4 *fl4,
+176 -187
View File
@@ -77,6 +77,7 @@
#include <linux/atomic.h>
#include <net/dst.h>
#include <net/checksum.h>
#include <net/tcp_states.h>
struct cgroup;
struct cgroup_subsys;
@@ -108,7 +109,7 @@ void mem_cgroup_sockets_destroy(struct cgroup *cgrp)
#else
/* Validate arguments and do nothing */
static inline __printf(2, 3)
void SOCK_DEBUG(struct sock *sk, const char *msg, ...)
void SOCK_DEBUG(const struct sock *sk, const char *msg, ...)
{
}
#endif
@@ -381,14 +382,15 @@ struct sock {
void *sk_security;
#endif
__u32 sk_mark;
kuid_t sk_uid;
u32 sk_classid;
struct cg_proto *sk_cgrp;
void (*sk_state_change)(struct sock *sk);
void (*sk_data_ready)(struct sock *sk, int bytes);
void (*sk_write_space)(struct sock *sk);
void (*sk_error_report)(struct sock *sk);
int (*sk_backlog_rcv)(struct sock *sk,
struct sk_buff *skb);
int (*sk_backlog_rcv)(struct sock *sk,
struct sk_buff *skb);
void (*sk_destruct)(struct sock *sk);
};
@@ -458,40 +460,40 @@ static inline struct sock *sk_nulls_next(const struct sock *sk)
NULL;
}
static inline int sk_unhashed(const struct sock *sk)
static inline bool sk_unhashed(const struct sock *sk)
{
return hlist_unhashed(&sk->sk_node);
}
static inline int sk_hashed(const struct sock *sk)
static inline bool sk_hashed(const struct sock *sk)
{
return !sk_unhashed(sk);
}
static __inline__ void sk_node_init(struct hlist_node *node)
static inline void sk_node_init(struct hlist_node *node)
{
node->pprev = NULL;
}
static __inline__ void sk_nulls_node_init(struct hlist_nulls_node *node)
static inline void sk_nulls_node_init(struct hlist_nulls_node *node)
{
node->pprev = NULL;
}
static __inline__ void __sk_del_node(struct sock *sk)
static inline void __sk_del_node(struct sock *sk)
{
__hlist_del(&sk->sk_node);
}
/* NB: equivalent to hlist_del_init_rcu */
static __inline__ int __sk_del_node_init(struct sock *sk)
static inline bool __sk_del_node_init(struct sock *sk)
{
if (sk_hashed(sk)) {
__sk_del_node(sk);
sk_node_init(&sk->sk_node);
return 1;
return true;
}
return 0;
return false;
}
/* Grab socket reference count. This operation is valid only
@@ -513,9 +515,9 @@ static inline void __sock_put(struct sock *sk)
atomic_dec(&sk->sk_refcnt);
}
static __inline__ int sk_del_node_init(struct sock *sk)
static inline bool sk_del_node_init(struct sock *sk)
{
int rc = __sk_del_node_init(sk);
bool rc = __sk_del_node_init(sk);
if (rc) {
/* paranoid for a while -acme */
@@ -526,18 +528,18 @@ static __inline__ int sk_del_node_init(struct sock *sk)
}
#define sk_del_node_init_rcu(sk) sk_del_node_init(sk)
static __inline__ int __sk_nulls_del_node_init_rcu(struct sock *sk)
static inline bool __sk_nulls_del_node_init_rcu(struct sock *sk)
{
if (sk_hashed(sk)) {
hlist_nulls_del_init_rcu(&sk->sk_nulls_node);
return 1;
return true;
}
return 0;
return false;
}
static __inline__ int sk_nulls_del_node_init_rcu(struct sock *sk)
static inline bool sk_nulls_del_node_init_rcu(struct sock *sk)
{
int rc = __sk_nulls_del_node_init_rcu(sk);
bool rc = __sk_nulls_del_node_init_rcu(sk);
if (rc) {
/* paranoid for a while -acme */
@@ -547,40 +549,40 @@ static __inline__ int sk_nulls_del_node_init_rcu(struct sock *sk)
return rc;
}
static __inline__ void __sk_add_node(struct sock *sk, struct hlist_head *list)
static inline void __sk_add_node(struct sock *sk, struct hlist_head *list)
{
hlist_add_head(&sk->sk_node, list);
}
static __inline__ void sk_add_node(struct sock *sk, struct hlist_head *list)
static inline void sk_add_node(struct sock *sk, struct hlist_head *list)
{
sock_hold(sk);
__sk_add_node(sk, list);
}
static __inline__ void sk_add_node_rcu(struct sock *sk, struct hlist_head *list)
static inline void sk_add_node_rcu(struct sock *sk, struct hlist_head *list)
{
sock_hold(sk);
hlist_add_head_rcu(&sk->sk_node, list);
}
static __inline__ void __sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
static inline void __sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
{
hlist_nulls_add_head_rcu(&sk->sk_nulls_node, list);
}
static __inline__ void sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
static inline void sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
{
sock_hold(sk);
__sk_nulls_add_node_rcu(sk, list);
}
static __inline__ void __sk_del_bind_node(struct sock *sk)
static inline void __sk_del_bind_node(struct sock *sk)
{
__hlist_del(&sk->sk_bind_node);
}
static __inline__ void sk_add_bind_node(struct sock *sk,
static inline void sk_add_bind_node(struct sock *sk,
struct hlist_head *list)
{
hlist_add_head(&sk->sk_bind_node, list);
@@ -669,7 +671,7 @@ static inline void sk_acceptq_added(struct sock *sk)
sk->sk_ack_backlog++;
}
static inline int sk_acceptq_is_full(struct sock *sk)
static inline bool sk_acceptq_is_full(const struct sock *sk)
{
return sk->sk_ack_backlog > sk->sk_max_ack_backlog;
}
@@ -677,19 +679,19 @@ static inline int sk_acceptq_is_full(struct sock *sk)
/*
* Compute minimal free write space needed to queue new packets.
*/
static inline int sk_stream_min_wspace(struct sock *sk)
static inline int sk_stream_min_wspace(const struct sock *sk)
{
return sk->sk_wmem_queued >> 1;
}
static inline int sk_stream_wspace(struct sock *sk)
static inline int sk_stream_wspace(const struct sock *sk)
{
return sk->sk_sndbuf - sk->sk_wmem_queued;
}
extern void sk_stream_write_space(struct sock *sk);
void sk_stream_write_space(struct sock *sk);
static inline int sk_stream_memory_free(struct sock *sk)
static inline bool sk_stream_memory_free(const struct sock *sk)
{
return sk->sk_wmem_queued < sk->sk_sndbuf;
}
@@ -792,13 +794,13 @@ static inline void sock_rps_reset_rxhash(struct sock *sk)
__rc; \
})
extern int sk_stream_wait_connect(struct sock *sk, long *timeo_p);
extern int sk_stream_wait_memory(struct sock *sk, long *timeo_p);
extern void sk_stream_wait_close(struct sock *sk, long timeo_p);
extern int sk_stream_error(struct sock *sk, int flags, int err);
extern void sk_stream_kill_queues(struct sock *sk);
int sk_stream_wait_connect(struct sock *sk, long *timeo_p);
int sk_stream_wait_memory(struct sock *sk, long *timeo_p);
void sk_stream_wait_close(struct sock *sk, long timeo_p);
int sk_stream_error(struct sock *sk, int flags, int err);
void sk_stream_kill_queues(struct sock *sk);
extern int sk_wait_data(struct sock *sk, long *timeo);
int sk_wait_data(struct sock *sk, long *timeo, const struct sk_buff *skb);
struct request_sock_ops;
struct timewait_sock_ops;
@@ -823,26 +825,26 @@ static inline void sk_prot_clear_nulls(struct sock *sk, int size)
* transport -> network interface is defined by struct inet_proto
*/
struct proto {
void (*close)(struct sock *sk,
void (*close)(struct sock *sk,
long timeout);
int (*connect)(struct sock *sk,
struct sockaddr *uaddr,
struct sockaddr *uaddr,
int addr_len);
int (*disconnect)(struct sock *sk, int flags);
struct sock * (*accept) (struct sock *sk, int flags, int *err);
struct sock * (*accept)(struct sock *sk, int flags, int *err);
int (*ioctl)(struct sock *sk, int cmd,
unsigned long arg);
int (*init)(struct sock *sk);
void (*destroy)(struct sock *sk);
void (*shutdown)(struct sock *sk, int how);
int (*setsockopt)(struct sock *sk, int level,
int (*setsockopt)(struct sock *sk, int level,
int optname, char __user *optval,
unsigned int optlen);
int (*getsockopt)(struct sock *sk, int level,
int optname, char __user *optval,
int __user *option);
int (*getsockopt)(struct sock *sk, int level,
int optname, char __user *optval,
int __user *option);
#ifdef CONFIG_COMPAT
int (*compat_setsockopt)(struct sock *sk,
int level,
@@ -859,14 +861,14 @@ struct proto {
struct msghdr *msg, size_t len);
int (*recvmsg)(struct kiocb *iocb, struct sock *sk,
struct msghdr *msg,
size_t len, int noblock, int flags,
int *addr_len);
size_t len, int noblock, int flags,
int *addr_len);
int (*sendpage)(struct sock *sk, struct page *page,
int offset, size_t size, int flags);
int (*bind)(struct sock *sk,
int (*bind)(struct sock *sk,
struct sockaddr *uaddr, int addr_len);
int (*backlog_rcv) (struct sock *sk,
int (*backlog_rcv) (struct sock *sk,
struct sk_buff *skb);
/* Keeping track of sk's, looking them up, and port selection methods. */
@@ -954,8 +956,8 @@ struct cg_proto {
struct mem_cgroup *memcg;
};
extern int proto_register(struct proto *prot, int alloc_slab);
extern void proto_unregister(struct proto *prot);
int proto_register(struct proto *prot, int alloc_slab);
void proto_unregister(struct proto *prot);
#ifdef SOCK_REFCNT_DEBUG
static inline void sk_refcnt_debug_inc(struct sock *sk)
@@ -1185,10 +1187,10 @@ proto_memory_pressure(struct proto *prot)
#ifdef CONFIG_PROC_FS
/* Called with local bh disabled */
extern void sock_prot_inuse_add(struct net *net, struct proto *prot, int inc);
extern int sock_prot_inuse_get(struct net *net, struct proto *proto);
void sock_prot_inuse_add(struct net *net, struct proto *prot, int inc);
int sock_prot_inuse_get(struct net *net, struct proto *proto);
#else
static void inline sock_prot_inuse_add(struct net *net, struct proto *prot,
static inline void sock_prot_inuse_add(struct net *net, struct proto *prot,
int inc)
{
}
@@ -1262,8 +1264,8 @@ static inline struct inode *SOCK_INODE(struct socket *socket)
/*
* Functions for memory accounting
*/
extern int __sk_mem_schedule(struct sock *sk, int size, int kind);
extern void __sk_mem_reclaim(struct sock *sk);
int __sk_mem_schedule(struct sock *sk, int size, int kind);
void __sk_mem_reclaim(struct sock *sk);
#define SK_MEM_QUANTUM ((int)PAGE_SIZE)
#define SK_MEM_QUANTUM_SHIFT ilog2(SK_MEM_QUANTUM)
@@ -1275,24 +1277,24 @@ static inline int sk_mem_pages(int amt)
return (amt + SK_MEM_QUANTUM - 1) >> SK_MEM_QUANTUM_SHIFT;
}
static inline int sk_has_account(struct sock *sk)
static inline bool sk_has_account(struct sock *sk)
{
/* return true if protocol supports memory accounting */
return !!sk->sk_prot->memory_allocated;
}
static inline int sk_wmem_schedule(struct sock *sk, int size)
static inline bool sk_wmem_schedule(struct sock *sk, int size)
{
if (!sk_has_account(sk))
return 1;
return true;
return size <= sk->sk_forward_alloc ||
__sk_mem_schedule(sk, size, SK_MEM_SEND);
}
static inline int sk_rmem_schedule(struct sock *sk, int size)
static inline bool sk_rmem_schedule(struct sock *sk, int size)
{
if (!sk_has_account(sk))
return 1;
return true;
return size <= sk->sk_forward_alloc ||
__sk_mem_schedule(sk, size, SK_MEM_RECV);
}
@@ -1357,7 +1359,7 @@ static inline void sk_wmem_free_skb(struct sock *sk, struct sk_buff *skb)
* Mark both the sk_lock and the sk_lock.slock as a
* per-address-family lock class.
*/
#define sock_lock_init_class_and_name(sk, sname, skey, name, key) \
#define sock_lock_init_class_and_name(sk, sname, skey, name, key) \
do { \
sk->sk_lock.owned = 0; \
init_waitqueue_head(&sk->sk_lock.wq); \
@@ -1365,18 +1367,18 @@ do { \
debug_check_no_locks_freed((void *)&(sk)->sk_lock, \
sizeof((sk)->sk_lock)); \
lockdep_set_class_and_name(&(sk)->sk_lock.slock, \
(skey), (sname)); \
(skey), (sname)); \
lockdep_init_map(&(sk)->sk_lock.dep_map, (name), (key), 0); \
} while (0)
extern void lock_sock_nested(struct sock *sk, int subclass);
void lock_sock_nested(struct sock *sk, int subclass);
static inline void lock_sock(struct sock *sk)
{
lock_sock_nested(sk, 0);
}
extern void release_sock(struct sock *sk);
void release_sock(struct sock *sk);
/* BH context may only use the following locking interface. */
#define bh_lock_sock(__sk) spin_lock(&((__sk)->sk_lock.slock))
@@ -1385,7 +1387,7 @@ extern void release_sock(struct sock *sk);
SINGLE_DEPTH_NESTING)
#define bh_unlock_sock(__sk) spin_unlock(&((__sk)->sk_lock.slock))
extern bool lock_sock_fast(struct sock *sk);
bool lock_sock_fast(struct sock *sk);
/**
* unlock_sock_fast - complement of lock_sock_fast
* @sk: socket
@@ -1403,46 +1405,35 @@ static inline void unlock_sock_fast(struct sock *sk, bool slow)
}
extern struct sock *sk_alloc(struct net *net, int family,
gfp_t priority,
struct proto *prot);
extern void sk_free(struct sock *sk);
extern void sk_release_kernel(struct sock *sk);
extern struct sock *sk_clone_lock(const struct sock *sk,
const gfp_t priority);
struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
struct proto *prot);
void sk_free(struct sock *sk);
void sk_release_kernel(struct sock *sk);
struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority);
extern struct sk_buff *sock_wmalloc(struct sock *sk,
unsigned long size, int force,
gfp_t priority);
extern struct sk_buff *sock_rmalloc(struct sock *sk,
unsigned long size, int force,
gfp_t priority);
extern void sock_wfree(struct sk_buff *skb);
extern void sock_rfree(struct sk_buff *skb);
struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force,
gfp_t priority);
struct sk_buff *sock_rmalloc(struct sock *sk, unsigned long size, int force,
gfp_t priority);
void sock_wfree(struct sk_buff *skb);
void sock_rfree(struct sk_buff *skb);
extern int sock_setsockopt(struct socket *sock, int level,
int op, char __user *optval,
unsigned int optlen);
int sock_setsockopt(struct socket *sock, int level, int op,
char __user *optval, unsigned int optlen);
extern int sock_getsockopt(struct socket *sock, int level,
int op, char __user *optval,
int __user *optlen);
extern struct sk_buff *sock_alloc_send_skb(struct sock *sk,
unsigned long size,
int noblock,
int *errcode);
extern struct sk_buff *sock_alloc_send_pskb(struct sock *sk,
unsigned long header_len,
unsigned long data_len,
int noblock,
int *errcode);
extern void *sock_kmalloc(struct sock *sk, int size,
gfp_t priority);
extern void sock_kfree_s(struct sock *sk, void *mem, int size);
extern void sk_send_sigurg(struct sock *sk);
int sock_getsockopt(struct socket *sock, int level, int op,
char __user *optval, int __user *optlen);
struct sk_buff *sock_alloc_send_skb(struct sock *sk, unsigned long size,
int noblock, int *errcode);
struct sk_buff *sock_alloc_send_pskb(struct sock *sk, unsigned long header_len,
unsigned long data_len, int noblock,
int *errcode);
void *sock_kmalloc(struct sock *sk, int size, gfp_t priority);
void sock_kfree_s(struct sock *sk, void *mem, int size);
void sk_send_sigurg(struct sock *sk);
#ifdef CONFIG_CGROUPS
extern void sock_update_classid(struct sock *sk);
void sock_update_classid(struct sock *sk);
#else
static inline void sock_update_classid(struct sock *sk)
{
@@ -1453,63 +1444,51 @@ static inline void sock_update_classid(struct sock *sk)
* Functions to fill in entries in struct proto_ops when a protocol
* does not implement a particular function.
*/
extern int sock_no_bind(struct socket *,
struct sockaddr *, int);
extern int sock_no_connect(struct socket *,
struct sockaddr *, int, int);
extern int sock_no_socketpair(struct socket *,
struct socket *);
extern int sock_no_accept(struct socket *,
struct socket *, int);
extern int sock_no_getname(struct socket *,
struct sockaddr *, int *, int);
extern unsigned int sock_no_poll(struct file *, struct socket *,
struct poll_table_struct *);
extern int sock_no_ioctl(struct socket *, unsigned int,
unsigned long);
extern int sock_no_listen(struct socket *, int);
extern int sock_no_shutdown(struct socket *, int);
extern int sock_no_getsockopt(struct socket *, int , int,
char __user *, int __user *);
extern int sock_no_setsockopt(struct socket *, int, int,
char __user *, unsigned int);
extern int sock_no_sendmsg(struct kiocb *, struct socket *,
struct msghdr *, size_t);
extern int sock_no_recvmsg(struct kiocb *, struct socket *,
struct msghdr *, size_t, int);
extern int sock_no_mmap(struct file *file,
struct socket *sock,
struct vm_area_struct *vma);
extern ssize_t sock_no_sendpage(struct socket *sock,
struct page *page,
int offset, size_t size,
int flags);
int sock_no_bind(struct socket *, struct sockaddr *, int);
int sock_no_connect(struct socket *, struct sockaddr *, int, int);
int sock_no_socketpair(struct socket *, struct socket *);
int sock_no_accept(struct socket *, struct socket *, int);
int sock_no_getname(struct socket *, struct sockaddr *, int *, int);
unsigned int sock_no_poll(struct file *, struct socket *,
struct poll_table_struct *);
int sock_no_ioctl(struct socket *, unsigned int, unsigned long);
int sock_no_listen(struct socket *, int);
int sock_no_shutdown(struct socket *, int);
int sock_no_getsockopt(struct socket *, int , int, char __user *, int __user *);
int sock_no_setsockopt(struct socket *, int, int, char __user *, unsigned int);
int sock_no_sendmsg(struct kiocb *, struct socket *, struct msghdr *, size_t);
int sock_no_recvmsg(struct kiocb *, struct socket *, struct msghdr *, size_t,
int);
int sock_no_mmap(struct file *file, struct socket *sock,
struct vm_area_struct *vma);
ssize_t sock_no_sendpage(struct socket *sock, struct page *page, int offset,
size_t size, int flags);
/*
* Functions to fill in entries in struct proto_ops when a protocol
* uses the inet style.
*/
extern int sock_common_getsockopt(struct socket *sock, int level, int optname,
int sock_common_getsockopt(struct socket *sock, int level, int optname,
char __user *optval, int __user *optlen);
extern int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock,
int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock,
struct msghdr *msg, size_t size, int flags);
extern int sock_common_setsockopt(struct socket *sock, int level, int optname,
int sock_common_setsockopt(struct socket *sock, int level, int optname,
char __user *optval, unsigned int optlen);
extern int compat_sock_common_getsockopt(struct socket *sock, int level,
int compat_sock_common_getsockopt(struct socket *sock, int level,
int optname, char __user *optval, int __user *optlen);
extern int compat_sock_common_setsockopt(struct socket *sock, int level,
int compat_sock_common_setsockopt(struct socket *sock, int level,
int optname, char __user *optval, unsigned int optlen);
extern void sk_common_release(struct sock *sk);
void sk_common_release(struct sock *sk);
/*
* Default socket callbacks and setup code
*/
/* Initialise core socket variables */
extern void sock_init_data(struct socket *sock, struct sock *sk);
extern void sk_filter_release_rcu(struct rcu_head *rcu);
/* Initialise core socket variables */
void sock_init_data(struct socket *sock, struct sock *sk);
void sk_filter_release_rcu(struct rcu_head *rcu);
/**
* sk_filter_release - release a socket filter
@@ -1570,8 +1549,7 @@ static inline void sock_put(struct sock *sk)
sk_free(sk);
}
extern int sk_receive_skb(struct sock *sk, struct sk_buff *skb,
const int nested);
int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested);
static inline void sk_tx_queue_set(struct sock *sk, int tx_queue)
{
@@ -1621,12 +1599,18 @@ static inline void sock_graft(struct sock *sk, struct socket *parent)
sk->sk_wq = parent->wq;
parent->sk = sk;
sk_set_socket(sk, parent);
sk->sk_uid = SOCK_INODE(parent)->i_uid;
security_sock_graft(sk, parent);
write_unlock_bh(&sk->sk_callback_lock);
}
extern int sock_i_uid(struct sock *sk);
extern unsigned long sock_i_ino(struct sock *sk);
int sock_i_uid(struct sock *sk);
unsigned long sock_i_ino(struct sock *sk);
static inline kuid_t sock_net_uid(const struct net *net, const struct sock *sk)
{
return sk ? sk->sk_uid : make_kuid(net->user_ns, 0);
}
static inline struct dst_entry *
__sk_dst_get(struct sock *sk)
@@ -1648,7 +1632,7 @@ sk_dst_get(struct sock *sk)
return dst;
}
extern void sk_reset_txq(struct sock *sk);
void sk_reset_txq(struct sock *sk);
static inline void dst_negative_advice(struct sock *sk)
{
@@ -1701,16 +1685,16 @@ sk_dst_reset(struct sock *sk)
spin_unlock(&sk->sk_dst_lock);
}
extern struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie);
struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie);
extern struct dst_entry *sk_dst_check(struct sock *sk, u32 cookie);
struct dst_entry *sk_dst_check(struct sock *sk, u32 cookie);
static inline int sk_can_gso(const struct sock *sk)
static inline bool sk_can_gso(const struct sock *sk)
{
return net_gso_ok(sk->sk_route_caps, sk->sk_gso_type);
}
extern void sk_setup_caps(struct sock *sk, struct dst_entry *dst);
void sk_setup_caps(struct sock *sk, struct dst_entry *dst);
static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
{
@@ -1822,7 +1806,7 @@ static inline int sk_rmem_alloc_get(const struct sock *sk)
*
* Returns true if socket has write or read allocations
*/
static inline int sk_has_allocations(const struct sock *sk)
static inline bool sk_has_allocations(const struct sock *sk)
{
return sk_wmem_alloc_get(sk) || sk_rmem_alloc_get(sk);
}
@@ -1861,9 +1845,7 @@ static inline int sk_has_allocations(const struct sock *sk)
*/
static inline bool wq_has_sleeper(struct socket_wq *wq)
{
/*
* We need to be sure we are in sync with the
/* We need to be sure we are in sync with the
* add_wait_queue modifications to the wait queue.
*
* This memory barrier is paired in the sock_poll_wait.
@@ -1885,22 +1867,21 @@ static inline void sock_poll_wait(struct file *filp,
{
if (!poll_does_not_wait(p) && wait_address) {
poll_wait(filp, wait_address, p);
/*
* We need to be sure we are in sync with the
/* We need to be sure we are in sync with the
* socket flags modification.
*
* This memory barrier is paired in the wq_has_sleeper.
*/
*/
smp_mb();
}
}
/*
* Queue a received datagram if it will fit. Stream and sequenced
* Queue a received datagram if it will fit. Stream and sequenced
* protocols can't normally use this as they need to fit buffers in
* and play with them.
*
* Inlined as it's very short and called for pretty much every
* Inlined as it's very short and called for pretty much every
* packet ever received.
*/
@@ -1926,19 +1907,19 @@ static inline void skb_set_owner_r(struct sk_buff *skb, struct sock *sk)
sk_mem_charge(sk, skb->truesize);
}
extern void sk_reset_timer(struct sock *sk, struct timer_list* timer,
unsigned long expires);
void sk_reset_timer(struct sock *sk, struct timer_list *timer,
unsigned long expires);
extern void sk_stop_timer(struct sock *sk, struct timer_list* timer);
void sk_stop_timer(struct sock *sk, struct timer_list *timer);
extern int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
extern int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb);
int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb);
/*
* Recover an error report and clear atomically
*/
static inline int sock_error(struct sock *sk)
{
int err;
@@ -1954,7 +1935,7 @@ static inline unsigned long sock_wspace(struct sock *sk)
if (!(sk->sk_shutdown & SEND_SHUTDOWN)) {
amt = sk->sk_sndbuf - atomic_read(&sk->sk_wmem_alloc);
if (amt < 0)
if (amt < 0)
amt = 0;
}
return amt;
@@ -1998,7 +1979,7 @@ static inline struct page *sk_stream_alloc_page(struct sock *sk)
/*
* Default write policy as shown to user space via poll/select/SIGIO
*/
static inline int sock_writeable(const struct sock *sk)
static inline bool sock_writeable(const struct sock *sk)
{
return atomic_read(&sk->sk_wmem_alloc) < (sk->sk_sndbuf >> 1);
}
@@ -2008,12 +1989,12 @@ static inline gfp_t gfp_any(void)
return in_softirq() ? GFP_ATOMIC : GFP_KERNEL;
}
static inline long sock_rcvtimeo(const struct sock *sk, int noblock)
static inline long sock_rcvtimeo(const struct sock *sk, bool noblock)
{
return noblock ? 0 : sk->sk_rcvtimeo;
}
static inline long sock_sndtimeo(const struct sock *sk, int noblock)
static inline long sock_sndtimeo(const struct sock *sk, bool noblock)
{
return noblock ? 0 : sk->sk_sndtimeo;
}
@@ -2031,12 +2012,12 @@ static inline int sock_intr_errno(long timeo)
return timeo == MAX_SCHEDULE_TIMEOUT ? -ERESTARTSYS : -EINTR;
}
extern void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
struct sk_buff *skb);
extern void __sock_recv_wifi_status(struct msghdr *msg, struct sock *sk,
struct sk_buff *skb);
void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
struct sk_buff *skb);
void __sock_recv_wifi_status(struct msghdr *msg, struct sock *sk,
struct sk_buff *skb);
static __inline__ void
static inline void
sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb)
{
ktime_t kt = skb->tstamp;
@@ -2067,8 +2048,8 @@ sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb)
__sock_recv_wifi_status(msg, sk, skb);
}
extern void __sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
struct sk_buff *skb);
void __sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
struct sk_buff *skb);
static inline void sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
struct sk_buff *skb)
@@ -2077,7 +2058,7 @@ static inline void sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
(1UL << SOCK_RCVTSTAMP) | \
(1UL << SOCK_TIMESTAMPING_RX_SOFTWARE) | \
(1UL << SOCK_TIMESTAMPING_SOFTWARE) | \
(1UL << SOCK_TIMESTAMPING_RAW_HARDWARE) | \
(1UL << SOCK_TIMESTAMPING_RAW_HARDWARE) | \
(1UL << SOCK_TIMESTAMPING_SYS_HARDWARE))
if (sk->sk_flags & FLAGS_TS_OR_DROPS)
@@ -2091,10 +2072,9 @@ static inline void sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
* @sk: socket sending this packet
* @tx_flags: filled with instructions for time stamping
*
* Currently only depends on SOCK_TIMESTAMPING* flags. Returns error code if
* parameters are invalid.
* Currently only depends on SOCK_TIMESTAMPING* flags.
*/
extern int sock_tx_timestamp(struct sock *sk, __u8 *tx_flags);
void sock_tx_timestamp(struct sock *sk, __u8 *tx_flags);
/**
* sk_eat_skb - Release a skb if it is no longer needed
@@ -2106,7 +2086,7 @@ extern int sock_tx_timestamp(struct sock *sk, __u8 *tx_flags);
* locked so that the sk_buff queue operation is ok.
*/
#ifdef CONFIG_NET_DMA
static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, int copied_early)
static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, bool copied_early)
{
__skb_unlink(skb, &sk->sk_receive_queue);
if (!copied_early)
@@ -2115,7 +2095,7 @@ static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, int copied_e
__skb_queue_tail(&sk->sk_async_wait_queue, skb);
}
#else
static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, int copied_early)
static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, bool copied_early)
{
__skb_unlink(skb, &sk->sk_receive_queue);
__kfree_skb(skb);
@@ -2158,12 +2138,21 @@ static inline struct sock *skb_steal_sock(struct sk_buff *skb)
return NULL;
}
extern void sock_enable_timestamp(struct sock *sk, int flag);
extern int sock_get_timestamp(struct sock *, struct timeval __user *);
extern int sock_get_timestampns(struct sock *, struct timespec __user *);
/* This helper checks if a socket is a full socket,
* ie _not_ a timewait or request socket.
* TODO: Check for TCPF_NEW_SYN_RECV when that starts to exist.
*/
static inline bool sk_fullsock(const struct sock *sk)
{
return (1 << sk->sk_state) & ~(TCPF_TIME_WAIT);
}
/*
* Enable debug/info messages
void sock_enable_timestamp(struct sock *sk, int flag);
int sock_get_timestamp(struct sock *, struct timeval __user *);
int sock_get_timestampns(struct sock *, struct timespec __user *);
/*
* Enable debug/info messages
*/
extern int net_msg_warn;
#define NETDEBUG(fmt, args...) \
@@ -2175,7 +2164,7 @@ extern int net_msg_warn;
extern __u32 sysctl_wmem_max;
extern __u32 sysctl_rmem_max;
extern void sk_init(void);
void sk_init(void);
extern int sysctl_optmem_max;
+6 -2
View File
@@ -514,6 +514,10 @@ long compat_sys_msgctl(int first, int second, void __user *uptr)
return err;
}
#ifndef COMPAT_SHMLBA
#define COMPAT_SHMLBA SHMLBA
#endif
#ifdef CONFIG_ARCH_WANT_OLD_COMPAT_IPC
long compat_sys_shmat(int first, int second, compat_uptr_t third, int version,
void __user *uptr)
@@ -524,7 +528,7 @@ long compat_sys_shmat(int first, int second, compat_uptr_t third, int version,
if (version == 1)
return -EINVAL;
err = do_shmat(first, uptr, second, &raddr);
err = do_shmat(first, uptr, second, &raddr, COMPAT_SHMLBA);
if (err < 0)
return err;
uaddr = compat_ptr(third);
@@ -536,7 +540,7 @@ long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmflg)
unsigned long ret;
long err;
err = do_shmat(shmid, compat_ptr(shmaddr), shmflg, &ret);
err = do_shmat(shmid, compat_ptr(shmaddr), shmflg, &ret, COMPAT_SHMLBA);
if (err)
return err;
force_successful_syscall_return();
+6 -5
View File
@@ -944,7 +944,8 @@ out:
* "raddr" thing points to kernel space, and there has to be a wrapper around
* this.
*/
long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
unsigned long shmlba)
{
struct shmid_kernel *shp;
unsigned long addr;
@@ -964,14 +965,14 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
if (shmid < 0)
goto out;
else if ((addr = (ulong)shmaddr)) {
if (addr & (SHMLBA-1)) {
if (addr & (shmlba - 1)) {
/*
* Round down to the nearest multiple of shmlba.
* For sane do_mmap_pgoff() parameters, avoid
* round downs that trigger nil-page and MAP_FIXED.
*/
if ((shmflg & SHM_RND) && addr >= SHMLBA)
addr &= ~(SHMLBA - 1);
if ((shmflg & SHM_RND) && addr >= shmlba)
addr &= ~(shmlba - 1);
else
#ifndef __ARCH_FORCE_SHMLBA
if (addr & ~PAGE_MASK)
@@ -1098,7 +1099,7 @@ SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg)
unsigned long ret;
long err;
err = do_shmat(shmid, shmaddr, shmflg, &ret);
err = do_shmat(shmid, shmaddr, shmflg, &ret, SHMLBA);
if (err)
return err;
force_successful_syscall_return();
+1 -1
View File
@@ -73,7 +73,7 @@ SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second,
default: {
unsigned long raddr;
ret = do_shmat(first, (char __user *)ptr,
second, &raddr);
second, &raddr, SHMLBA);
if (ret)
return ret;
return put_user(raddr, (unsigned long __user *) third);
+37 -20
View File
@@ -354,6 +354,9 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
*/
down_write_nested(&mm->mmap_sem, SINGLE_DEPTH_NESTING);
/* No ordering required: file already has been exposed. */
RCU_INIT_POINTER(mm->exe_file, get_mm_exe_file(oldmm));
mm->locked_vm = 0;
mm->mmap = NULL;
mm->mmap_cache = NULL;
@@ -484,7 +487,13 @@ static inline void mm_free_pgd(struct mm_struct *mm)
pgd_free(mm, mm->pgd);
}
#else
#define dup_mmap(mm, oldmm) (0)
static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
{
down_write(&oldmm->mmap_sem);
RCU_INIT_POINTER(mm->exe_file, get_mm_exe_file(oldmm));
up_write(&oldmm->mmap_sem);
return 0;
}
#define mm_alloc_pgd(mm) (0)
#define mm_free_pgd(mm)
#endif /* CONFIG_MMU */
@@ -640,37 +649,47 @@ void removed_exe_file_vma(struct mm_struct *mm)
}
/**
* set_mm_exe_file - change a reference to the mm's executable file
*
* This changes mm's executable file (shown as symlink /proc/[pid]/exe).
*
* Main users are mmput(), sys_execve() and sys_prctl(PR_SET_MM_MAP/EXE_FILE).
* Callers prevent concurrent invocations: in mmput() nobody alive left,
* in execve task is single-threaded, prctl holds mmap_sem exclusively.
*/
void set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file)
{
struct file *old_exe_file = rcu_dereference_protected(mm->exe_file,
!atomic_read(&mm->mm_users) || current->in_execve ||
lockdep_is_held(&mm->mmap_sem));
if (new_exe_file)
get_file(new_exe_file);
if (mm->exe_file)
fput(mm->exe_file);
mm->exe_file = new_exe_file;
rcu_assign_pointer(mm->exe_file, new_exe_file);
if (old_exe_file)
fput(old_exe_file);
mm->num_exe_file_vmas = 0;
}
/**
* get_mm_exe_file - acquire a reference to the mm's executable file
*
* Returns %NULL if mm has no associated executable file.
* User must release file via fput().
*/
struct file *get_mm_exe_file(struct mm_struct *mm)
{
struct file *exe_file;
/* We need mmap_sem to protect against races with removal of
* VM_EXECUTABLE vmas */
down_read(&mm->mmap_sem);
exe_file = mm->exe_file;
if (exe_file)
get_file(exe_file);
up_read(&mm->mmap_sem);
rcu_read_lock();
exe_file = rcu_dereference(mm->exe_file);
if (exe_file && !get_file_rcu(exe_file))
exe_file = NULL;
rcu_read_unlock();
return exe_file;
}
static void dup_mm_exe_file(struct mm_struct *oldmm, struct mm_struct *newmm)
{
/* It's safe to write the exe_file pointer without exe_file_lock because
* this is called during fork when the task is not yet in /proc */
newmm->exe_file = get_mm_exe_file(oldmm);
}
/**
* get_task_mm - acquire a reference to the task's mm
*
@@ -837,8 +856,6 @@ struct mm_struct *dup_mm(struct task_struct *tsk)
if (init_new_context(tsk, mm))
goto fail_nocontext;
dup_mm_exe_file(oldmm, mm);
err = dup_mmap(mm, oldmm);
if (err)
goto free_pt;
+17 -7
View File
@@ -323,22 +323,24 @@ EXPORT_SYMBOL_GPL(ktime_sub_ns);
/*
* Divide a ktime value by a nanosecond value
*/
u64 ktime_divns(const ktime_t kt, s64 div)
s64 __ktime_divns(const ktime_t kt, s64 div)
{
u64 dclc;
int sft = 0;
s64 dclc;
u64 tmp;
dclc = ktime_to_ns(kt);
tmp = dclc < 0 ? -dclc : dclc;
/* Make sure the divisor is less than 2^32: */
while (div >> 32) {
sft++;
div >>= 1;
}
dclc >>= sft;
do_div(dclc, (unsigned long) div);
return dclc;
tmp >>= sft;
do_div(tmp, (unsigned long) div);
return dclc < 0 ? -tmp : tmp;
}
EXPORT_SYMBOL_GPL(__ktime_divns);
#endif /* BITS_PER_LONG >= 64 */
/*
@@ -469,6 +471,7 @@ void destroy_hrtimer_on_stack(struct hrtimer *timer)
{
debug_object_free(timer, &hrtimer_debug_descr);
}
EXPORT_SYMBOL_GPL(destroy_hrtimer_on_stack);
#else
static inline void debug_hrtimer_init(struct hrtimer *timer) { }
@@ -661,6 +664,7 @@ static int hrtimer_reprogram(struct hrtimer *timer,
static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base)
{
base->expires_next.tv64 = KTIME_MAX;
base->hang_detected = 0;
base->hres_active = 0;
}
@@ -1164,7 +1168,12 @@ static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id,
cpu_base = &__raw_get_cpu_var(hrtimer_bases);
if (clock_id == CLOCK_REALTIME && mode != HRTIMER_MODE_ABS)
/*
* POSIX magic: Relative CLOCK_REALTIME timers are not affected by
* clock modifications, so they needs to become CLOCK_MONOTONIC to
* ensure POSIX compliance.
*/
if (clock_id == CLOCK_REALTIME && mode & HRTIMER_MODE_REL)
clock_id = CLOCK_MONOTONIC;
base = hrtimer_clockid_to_base(clock_id);
@@ -1650,6 +1659,7 @@ static void __cpuinit init_hrtimers_cpu(int cpu)
timerqueue_init_head(&cpu_base->clock_base[i].active);
}
cpu_base->active_bases = 0;
hrtimer_init_hres(cpu_base);
}
+9
View File
@@ -646,6 +646,15 @@ static int alarm_timer_set(struct k_itimer *timr, int flags,
/* start the timer */
timr->it.alarm.interval = timespec_to_ktime(new_setting->it_interval);
/*
* Rate limit to the tick as a hot fix to prevent DOS. Will be
* mopped up later.
*/
if (timr->it.alarm.interval.tv64 &&
ktime_to_ns(timr->it.alarm.interval) < TICK_NSEC)
timr->it.alarm.interval = ktime_set(0, TICK_NSEC);
exp = timespec_to_ktime(new_setting->it_value);
/* Convert (if necessary) to absolute time */
if (flags != TIMER_ABSTIME) {
+2 -3
View File
@@ -677,9 +677,8 @@ static int raw_sendmsg(struct kiocb *iocb, struct socket *sock,
err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size);
if (err < 0)
goto free_skb;
err = sock_tx_timestamp(sk, &skb_shinfo(skb)->tx_flags);
if (err < 0)
goto free_skb;
sock_tx_timestamp(sk, &skb_shinfo(skb)->tx_flags);
skb->dev = dev;
skb->sk = sk;
+7 -3
View File
@@ -1742,20 +1742,21 @@ static void __release_sock(struct sock *sk)
* sk_wait_data - wait for data to arrive at sk_receive_queue
* @sk: sock to wait on
* @timeo: for how long
* @skb: last skb seen on sk_receive_queue
*
* Now socket state including sk->sk_err is changed only under lock,
* hence we may omit checks after joining wait queue.
* We check receive queue before schedule() only as optimization;
* it is very likely that release_sock() added new data.
*/
int sk_wait_data(struct sock *sk, long *timeo)
int sk_wait_data(struct sock *sk, long *timeo, const struct sk_buff *skb)
{
int rc;
DEFINE_WAIT(wait);
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
rc = sk_wait_event(sk, timeo, !skb_queue_empty(&sk->sk_receive_queue));
rc = sk_wait_event(sk, timeo, skb_peek_tail(&sk->sk_receive_queue) != skb);
clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
finish_wait(sk_sleep(sk), &wait);
return rc;
@@ -2095,8 +2096,11 @@ void sock_init_data(struct socket *sock, struct sock *sk)
sk->sk_type = sock->type;
sk->sk_wq = sock->wq;
sock->sk = sk;
} else
sk->sk_uid = SOCK_INODE(sock)->i_uid;
} else {
sk->sk_wq = NULL;
sk->sk_uid = make_kuid(sock_net(sk)->user_ns, 0);
}
spin_lock_init(&sk->sk_dst_lock);
rwlock_init(&sk->sk_callback_lock);
+6 -2
View File
@@ -68,11 +68,13 @@ static int sockev_client_cb(struct notifier_block *nb,
sock = (struct socket *)data;
if (!socknlmsgsk || !sock)
goto done;
goto sk_null;
sk = sock->sk;
if (!sk)
goto done;
goto sk_null;
sock_hold(sk);
skb = nlmsg_new(sizeof(struct sknlsockevmsg), GFP_KERNEL);
if (skb == NULL)
@@ -96,6 +98,8 @@ static int sockev_client_cb(struct notifier_block *nb,
smsg->skflags = sk->sk_flags;
nlmsg_notify(socknlmsgsk, skb, 0, SKNLGRP_SOCKEV, 0, GFP_KERNEL);
done:
sock_put(sk);
sk_null:
return 0;
}
+2
View File
@@ -165,6 +165,8 @@ static void dccp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
} else
dst_hold(dst);
dst->ops->update_pmtu(dst, ntohl(info));
if (inet_csk(sk)->icsk_pmtu_cookie > dst_mtu(dst)) {
dccp_sync_mss(sk, dst_mtu(dst));
} /* else let the usual retransmit timer handle it */
+3 -3
View File
@@ -848,7 +848,7 @@ int dccp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
default:
dccp_pr_debug("packet_type=%s\n",
dccp_packet_name(dh->dccph_type));
sk_eat_skb(sk, skb, 0);
sk_eat_skb(sk, skb, false);
}
verify_sock_status:
if (sock_flag(sk, SOCK_DONE)) {
@@ -888,7 +888,7 @@ verify_sock_status:
break;
}
sk_wait_data(sk, &timeo);
sk_wait_data(sk, &timeo, NULL);
continue;
found_ok_skb:
if (len > skb->len)
@@ -905,7 +905,7 @@ verify_sock_status:
len = skb->len;
found_fin_ok:
if (!(flags & MSG_PEEK))
sk_eat_skb(sk, skb, 0);
sk_eat_skb(sk, skb, false);
break;
} while (1);
out:
+2
View File
@@ -361,6 +361,7 @@ static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb)
fl4.daddr = daddr;
fl4.saddr = rt->rt_spec_dst;
fl4.flowi4_mark = mark;
fl4.flowi4_uid = sock_net_uid(net, NULL);
fl4.flowi4_tos = RT_TOS(ip_hdr(skb)->tos);
fl4.flowi4_proto = IPPROTO_ICMP;
security_skb_classify_flow(skb, flowi4_to_flowi(&fl4));
@@ -392,6 +393,7 @@ static struct rtable *icmp_route_lookup(struct net *net,
param->replyopts.opt.opt.faddr : iph->saddr);
fl4->saddr = saddr;
fl4->flowi4_mark = mark;
fl4->flowi4_uid = sock_net_uid(net, NULL);
fl4->flowi4_tos = RT_TOS(tos);
fl4->flowi4_proto = IPPROTO_ICMP;
fl4->fl4_icmp_type = type;
+4 -2
View File
@@ -365,7 +365,8 @@ struct dst_entry *inet_csk_route_req(struct sock *sk,
RT_CONN_FLAGS(sk), RT_SCOPE_UNIVERSE,
sk->sk_protocol, inet_sk_flowi_flags(sk),
(opt && opt->opt.srr) ? opt->opt.faddr : ireq->rmt_addr,
ireq->loc_addr, ireq->rmt_port, inet_sk(sk)->inet_sport);
ireq->loc_addr, ireq->rmt_port, inet_sk(sk)->inet_sport,
sk->sk_uid);
security_req_classify_flow(req, flowi4_to_flowi(fl4));
rt = ip_route_output_flow(net, fl4, sk);
if (IS_ERR(rt))
@@ -398,7 +399,8 @@ struct dst_entry *inet_csk_route_child_sock(struct sock *sk,
RT_CONN_FLAGS(sk), RT_SCOPE_UNIVERSE,
sk->sk_protocol, inet_sk_flowi_flags(sk),
(opt && opt->opt.srr) ? opt->opt.faddr : ireq->rmt_addr,
ireq->loc_addr, ireq->rmt_port, inet_sk(sk)->inet_sport);
ireq->loc_addr, ireq->rmt_port, inet_sk(sk)->inet_sport,
sk->sk_uid);
security_req_classify_flow(req, flowi4_to_flowi(fl4));
rt = ip_route_output_flow(net, fl4, sk);
if (IS_ERR(rt))
+2 -1
View File
@@ -1511,7 +1511,8 @@ void ip_send_reply(struct sock *sk, struct sk_buff *skb, __be32 daddr,
RT_SCOPE_UNIVERSE, sk->sk_protocol,
ip_reply_arg_flowi_flags(arg),
daddr, rt->rt_spec_dst,
tcp_hdr(skb)->source, tcp_hdr(skb)->dest);
tcp_hdr(skb)->source, tcp_hdr(skb)->dest,
arg->uid);
security_skb_classify_flow(skb, flowi4_to_flowi(&fl4));
rt = ip_route_output_key(sock_net(sk), &fl4);
if (IS_ERR(rt))
+17 -7
View File
@@ -1211,6 +1211,10 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
struct net *net = sock_net(sk);
struct mr_table *mrt;
if (sk->sk_type != SOCK_RAW ||
inet_sk(sk)->inet_num != IPPROTO_IGMP)
return -EOPNOTSUPP;
mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT);
if (mrt == NULL)
return -ENOENT;
@@ -1223,11 +1227,8 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
switch (optname) {
case MRT_INIT:
if (sk->sk_type != SOCK_RAW ||
inet_sk(sk)->inet_num != IPPROTO_IGMP)
return -EOPNOTSUPP;
if (optlen != sizeof(int))
return -ENOPROTOOPT;
return -EINVAL;
rtnl_lock();
if (rtnl_dereference(mrt->mroute_sk)) {
@@ -1288,9 +1289,11 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
case MRT_ASSERT:
{
int v;
if (optlen != sizeof(v))
return -EINVAL;
if (get_user(v, (int __user *)optval))
return -EFAULT;
mrt->mroute_do_assert = (v) ? 1 : 0;
mrt->mroute_do_assert = !!v;
return 0;
}
#ifdef CONFIG_IP_PIMSM
@@ -1298,9 +1301,11 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
{
int v;
if (optlen != sizeof(v))
return -EINVAL;
if (get_user(v, (int __user *)optval))
return -EFAULT;
v = (v) ? 1 : 0;
v = !!v;
rtnl_lock();
ret = 0;
@@ -1329,7 +1334,8 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
} else {
if (!ipmr_new_table(net, v))
ret = -ENOMEM;
raw_sk(sk)->ipmr_table = v;
else
raw_sk(sk)->ipmr_table = v;
}
rtnl_unlock();
return ret;
@@ -1355,6 +1361,10 @@ int ip_mroute_getsockopt(struct sock *sk, int optname, char __user *optval, int
struct net *net = sock_net(sk);
struct mr_table *mrt;
if (sk->sk_type != SOCK_RAW ||
inet_sk(sk)->inet_num != IPPROTO_IGMP)
return -EOPNOTSUPP;
mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT);
if (mrt == NULL)
return -ENOENT;
+4 -4
View File
@@ -737,9 +737,8 @@ int ping_v4_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
ipc.opt = NULL;
ipc.oif = sk->sk_bound_dev_if;
ipc.tx_flags = 0;
err = sock_tx_timestamp(sk, &ipc.tx_flags);
if (err)
return err;
sock_tx_timestamp(sk, &ipc.tx_flags);
if (msg->msg_controllen) {
err = ip_cmsg_send(sock_net(sk), msg, &ipc);
@@ -786,7 +785,8 @@ int ping_v4_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
flowi4_init_output(&fl4, ipc.oif, sk->sk_mark, tos,
RT_SCOPE_UNIVERSE, sk->sk_protocol,
inet_sk_flowi_flags(sk), faddr, saddr, 0, 0);
inet_sk_flowi_flags(sk), faddr, saddr, 0, 0,
sk->sk_uid);
security_sk_classify_flow(sk, flowi4_to_flowi(&fl4));
rt = ip_route_output_flow(net, &fl4, sk);
+1 -1
View File
@@ -594,7 +594,7 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
RT_SCOPE_UNIVERSE,
hdrincl ? IPPROTO_RAW : sk->sk_protocol,
inet_sk_flowi_flags(sk) | FLOWI_FLAG_CAN_SLEEP,
daddr, saddr, 0, 0);
daddr, saddr, 0, 0, sk->sk_uid);
if (!hdrincl) {
rfv.iov = msg->msg_iov;
+1 -1
View File
@@ -352,7 +352,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
RT_CONN_FLAGS(sk), RT_SCOPE_UNIVERSE, IPPROTO_TCP,
inet_sk_flowi_flags(sk),
(opt && opt->srr) ? opt->faddr : ireq->rmt_addr,
ireq->loc_addr, th->source, th->dest);
ireq->loc_addr, th->source, th->dest, sk->sk_uid);
security_req_classify_flow(req, flowi4_to_flowi(&fl4));
rt = ip_route_output_key(sock_net(sk), &fl4);
if (IS_ERR(rt)) {
+13 -10
View File
@@ -675,7 +675,7 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *ppos,
*/
if (!skb_queue_empty(&sk->sk_receive_queue))
break;
sk_wait_data(sk, &timeo);
sk_wait_data(sk, &timeo, NULL);
if (signal_pending(current)) {
ret = sock_intr_errno(timeo);
break;
@@ -1397,11 +1397,11 @@ int tcp_read_sock(struct sock *sk, read_descriptor_t *desc,
break;
}
if (tcp_hdr(skb)->fin) {
sk_eat_skb(sk, skb, 0);
sk_eat_skb(sk, skb, false);
++seq;
break;
}
sk_eat_skb(sk, skb, 0);
sk_eat_skb(sk, skb, false);
if (!desc->count)
break;
tp->copied_seq = seq;
@@ -1440,8 +1440,8 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
int target; /* Read at least this many bytes */
long timeo;
struct task_struct *user_recv = NULL;
int copied_early = 0;
struct sk_buff *skb;
bool copied_early = false;
struct sk_buff *skb, *last;
u32 urg_hole = 0;
lock_sock(sk);
@@ -1501,7 +1501,9 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
/* Next get a buffer. */
last = skb_peek_tail(&sk->sk_receive_queue);
skb_queue_walk(&sk->sk_receive_queue, skb) {
last = skb;
/* Now that we have two receive queues this
* shouldn't happen.
*/
@@ -1630,8 +1632,9 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
/* Do not sleep, just process backlog. */
release_sock(sk);
lock_sock(sk);
} else
sk_wait_data(sk, &timeo);
} else {
sk_wait_data(sk, &timeo, last);
}
#ifdef CONFIG_NET_DMA
tcp_service_net_dma(sk, false); /* Don't block */
@@ -1719,7 +1722,7 @@ do_prequeue:
dma_async_memcpy_issue_pending(tp->ucopy.dma_chan);
if ((offset + used) == skb->len)
copied_early = 1;
copied_early = true;
} else
#endif
@@ -1753,7 +1756,7 @@ skip_copy:
goto found_fin_ok;
if (!(flags & MSG_PEEK)) {
sk_eat_skb(sk, skb, copied_early);
copied_early = 0;
copied_early = false;
}
continue;
@@ -1762,7 +1765,7 @@ skip_copy:
++*seq;
if (!(flags & MSG_PEEK)) {
sk_eat_skb(sk, skb, copied_early);
copied_early = 0;
copied_early = false;
}
break;
} while (len > 0);
+9 -6
View File
@@ -628,6 +628,7 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
arg.iov[0].iov_base = (unsigned char *)&rep;
arg.iov[0].iov_len = sizeof(rep.th);
net = sk ? sock_net(sk) : dev_net(skb_dst(skb)->dev);
#ifdef CONFIG_TCP_MD5SIG
hash_location = tcp_parse_md5sig_option(th);
if (!sk && hash_location) {
@@ -638,7 +639,7 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
* Incoming packet is checked with md5 hash with finding key,
* no RST generated if md5 hash doesn't match.
*/
sk1 = __inet_lookup_listener(dev_net(skb_dst(skb)->dev),
sk1 = __inet_lookup_listener(net,
&tcp_hashinfo, ip_hdr(skb)->daddr,
ntohs(th->source), inet_iif(skb));
/* don't send rst if it can't find key */
@@ -685,8 +686,8 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
if (sk)
arg.bound_dev_if = sk->sk_bound_dev_if;
net = dev_net(skb_dst(skb)->dev);
arg.tos = ip_hdr(skb)->tos;
arg.uid = sock_net_uid(net, sk && sk_fullsock(sk) ? sk : NULL);
ip_send_reply(net->ipv4.tcp_sock, skb, ip_hdr(skb)->saddr,
&arg, arg.iov[0].iov_len);
@@ -706,7 +707,8 @@ release_sk1:
outside socket context is ugly, certainly. What can I do?
*/
static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack,
static void tcp_v4_send_ack(const struct sock *sk, struct sk_buff *skb,
u32 seq, u32 ack,
u32 win, u32 ts, int oif,
struct tcp_md5sig_key *key,
int reply_flags, u8 tos)
@@ -721,7 +723,7 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack,
];
} rep;
struct ip_reply_arg arg;
struct net *net = dev_net(skb_dst(skb)->dev);
struct net *net = sock_net(sk);
memset(&rep.th, 0, sizeof(struct tcphdr));
memset(&arg, 0, sizeof(arg));
@@ -770,6 +772,7 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack,
if (oif)
arg.bound_dev_if = oif;
arg.tos = tos;
arg.uid = sock_net_uid(net, sk_fullsock(sk) ? sk : NULL);
ip_send_reply(net->ipv4.tcp_sock, skb, ip_hdr(skb)->saddr,
&arg, arg.iov[0].iov_len);
@@ -781,7 +784,7 @@ static void tcp_v4_timewait_ack(struct sock *sk, struct sk_buff *skb)
struct inet_timewait_sock *tw = inet_twsk(sk);
struct tcp_timewait_sock *tcptw = tcp_twsk(sk);
tcp_v4_send_ack(skb, tcptw->tw_snd_nxt, tcptw->tw_rcv_nxt,
tcp_v4_send_ack(sk, skb, tcptw->tw_snd_nxt, tcptw->tw_rcv_nxt,
tcptw->tw_rcv_wnd >> tw->tw_rcv_wscale,
tcptw->tw_ts_recent,
tw->tw_bound_dev_if,
@@ -796,7 +799,7 @@ static void tcp_v4_timewait_ack(struct sock *sk, struct sk_buff *skb)
static void tcp_v4_reqsk_send_ack(struct sock *sk, struct sk_buff *skb,
struct request_sock *req)
{
tcp_v4_send_ack(skb, tcp_rsk(req)->snt_isn + 1,
tcp_v4_send_ack(sk, skb, tcp_rsk(req)->snt_isn + 1,
tcp_rsk(req)->rcv_isn + 1, req->rcv_wnd,
req->ts_recent,
0,
+5 -4
View File
@@ -872,9 +872,9 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
ipc.addr = inet->inet_saddr;
ipc.oif = sk->sk_bound_dev_if;
err = sock_tx_timestamp(sk, &ipc.tx_flags);
if (err)
return err;
sock_tx_timestamp(sk, &ipc.tx_flags);
if (msg->msg_controllen) {
err = ip_cmsg_send(sock_net(sk), msg, &ipc);
if (err)
@@ -932,7 +932,8 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
flowi4_init_output(fl4, ipc.oif, sk->sk_mark, tos,
RT_SCOPE_UNIVERSE, sk->sk_protocol,
inet_sk_flowi_flags(sk)|FLOWI_FLAG_CAN_SLEEP,
faddr, saddr, dport, inet->inet_sport);
faddr, saddr, dport, inet->inet_sport,
sk->sk_uid);
security_sk_classify_flow(sk, flowi4_to_flowi(fl4));
rt = ip_route_output_flow(net, fl4, sk);
+1
View File
@@ -711,6 +711,7 @@ int inet6_sk_rebuild_header(struct sock *sk)
fl6.flowi6_mark = sk->sk_mark;
fl6.fl6_dport = inet->inet_dport;
fl6.fl6_sport = inet->inet_sport;
fl6.flowi6_uid = sk->sk_uid;
security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));
rcu_read_lock();
+2 -1
View File
@@ -33,6 +33,7 @@
#include <linux/pfkeyv2.h>
#include <linux/string.h>
#include <linux/scatterlist.h>
#include <net/ip6_route.h>
#include <net/icmp.h>
#include <net/ipv6.h>
#include <net/protocol.h>
@@ -619,7 +620,7 @@ static void ah6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
NETDEBUG(KERN_DEBUG "pmtu discovery on SA AH/%08x/%pI6\n",
ntohl(ah->spi), &iph->daddr);
ip6_update_pmtu(skb, net, info, 0, 0, sock_net_uid(net, NULL));
xfrm_state_put(x);
}
+1
View File
@@ -160,6 +160,7 @@ ipv4_connected:
fl6.flowi6_mark = sk->sk_mark;
fl6.fl6_dport = inet->inet_dport;
fl6.fl6_sport = inet->inet_sport;
fl6.flowi6_uid = sk->sk_uid;
if (!fl6.flowi6_oif && (addr_type&IPV6_ADDR_MULTICAST))
fl6.flowi6_oif = np->mcast_oif;
+2
View File
@@ -37,6 +37,7 @@
#include <linux/random.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <net/ip6_route.h>
#include <net/icmp.h>
#include <net/ipv6.h>
#include <net/protocol.h>
@@ -440,6 +441,7 @@ static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
return;
printk(KERN_DEBUG "pmtu discovery on SA ESP/%08x/%pI6\n",
ntohl(esph->spi), &iph->daddr);
ip6_update_pmtu(skb, net, info, 0, 0, sock_net_uid(net, NULL));
xfrm_state_put(x);
}
+3 -5
View File
@@ -466,6 +466,7 @@ void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info)
fl6.flowi6_oif = iif;
fl6.fl6_icmp_type = type;
fl6.fl6_icmp_code = code;
fl6.flowi6_uid = sock_net_uid(net, NULL);
security_skb_classify_flow(skb, flowi6_to_flowi(&fl6));
sk = icmpv6_xmit_lock(net);
@@ -564,6 +565,7 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
fl6.flowi6_oif = skb->dev->ifindex;
fl6.fl6_icmp_type = ICMPV6_ECHO_REPLY;
fl6.flowi6_mark = mark;
fl6.flowi6_uid = sock_net_uid(net, NULL);
security_skb_classify_flow(skb, flowi6_to_flowi(&fl6));
sk = icmpv6_xmit_lock(net);
@@ -667,7 +669,6 @@ static int icmpv6_rcv(struct sk_buff *skb)
struct net_device *dev = skb->dev;
struct inet6_dev *idev = __in6_dev_get(dev);
const struct in6_addr *saddr, *daddr;
const struct ipv6hdr *orig_hdr;
struct icmp6hdr *hdr;
u8 type;
@@ -679,7 +680,7 @@ static int icmpv6_rcv(struct sk_buff *skb)
XFRM_STATE_ICMP))
goto drop_no_count;
if (!pskb_may_pull(skb, sizeof(*hdr) + sizeof(*orig_hdr)))
if (!pskb_may_pull(skb, sizeof(*hdr) + sizeof(struct ipv6hdr)))
goto drop_no_count;
nh = skb_network_offset(skb);
@@ -741,9 +742,6 @@ static int icmpv6_rcv(struct sk_buff *skb)
if (!pskb_may_pull(skb, sizeof(struct ipv6hdr)))
goto discard_it;
hdr = icmp6_hdr(skb);
orig_hdr = (struct ipv6hdr *) (hdr + 1);
rt6_pmtu_discovery(&orig_hdr->daddr, &orig_hdr->saddr, dev,
ntohl(hdr->icmp6_mtu));
/*
* Drop through to notify
+2
View File
@@ -74,6 +74,7 @@ struct dst_entry *inet6_csk_route_req(struct sock *sk,
fl6.flowi6_mark = inet_rsk(req)->ir_mark;
fl6.fl6_dport = inet_rsk(req)->rmt_port;
fl6.fl6_sport = inet_rsk(req)->loc_port;
fl6.flowi6_uid = sk->sk_uid;
security_req_classify_flow(req, flowi6_to_flowi(&fl6));
dst = ip6_dst_lookup_flow(sk, &fl6, final_p, false);
@@ -225,6 +226,7 @@ int inet6_csk_xmit(struct sk_buff *skb, struct flowi *fl_unused)
fl6.flowi6_mark = sk->sk_mark;
fl6.fl6_sport = inet->inet_sport;
fl6.fl6_dport = inet->inet_dport;
fl6.flowi6_uid = sk->sk_uid;
security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));
rcu_read_lock();
+2 -5
View File
@@ -1321,11 +1321,8 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
}
/* For UDP, check if TX timestamp is enabled */
if (sk->sk_type == SOCK_DGRAM) {
err = sock_tx_timestamp(sk, &tx_flags);
if (err)
goto error;
}
if (sk->sk_type == SOCK_DGRAM)
sock_tx_timestamp(sk, &tx_flags);
/*
* Let's try using as much space as possible.
+3
View File
@@ -1027,6 +1027,8 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev)
memcpy(&fl6, &t->fl.u.ip6, sizeof (fl6));
fl6.flowi6_proto = IPPROTO_IPIP;
fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
dsfield = ipv4_get_dsfield(iph);
if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
@@ -1078,6 +1080,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev)
memcpy(&fl6, &t->fl.u.ip6, sizeof (fl6));
fl6.flowi6_proto = IPPROTO_IPV6;
fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
dsfield = ipv6_get_dsfield(ipv6h);
if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
+8 -3
View File
@@ -1588,6 +1588,10 @@ int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, uns
struct net *net = sock_net(sk);
struct mr6_table *mrt;
if (sk->sk_type != SOCK_RAW ||
inet_sk(sk)->inet_num != IPPROTO_ICMPV6)
return -EOPNOTSUPP;
mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT);
if (mrt == NULL)
return -ENOENT;
@@ -1599,9 +1603,6 @@ int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, uns
switch (optname) {
case MRT6_INIT:
if (sk->sk_type != SOCK_RAW ||
inet_sk(sk)->inet_num != IPPROTO_ICMPV6)
return -EOPNOTSUPP;
if (optlen < sizeof(int))
return -EINVAL;
@@ -1722,6 +1723,10 @@ int ip6_mroute_getsockopt(struct sock *sk, int optname, char __user *optval,
struct net *net = sock_net(sk);
struct mr6_table *mrt;
if (sk->sk_type != SOCK_RAW ||
inet_sk(sk)->inet_num != IPPROTO_ICMPV6)
return -EOPNOTSUPP;
mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT);
if (mrt == NULL)
return -ENOENT;
+2
View File
@@ -43,6 +43,7 @@
#include <linux/list.h>
#include <linux/vmalloc.h>
#include <linux/rtnetlink.h>
#include <net/ip6_route.h>
#include <net/icmp.h>
#include <net/ipv6.h>
#include <net/protocol.h>
@@ -71,6 +72,7 @@ static void ipcomp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
printk(KERN_DEBUG "pmtu discovery on SA IPCOMP/%08x/%pI6\n",
spi, &iph->daddr);
ip6_update_pmtu(skb, net, info, 0, 0, sock_net_uid(net, NULL));
xfrm_state_put(x);
}
+1
View File
@@ -19,6 +19,7 @@ int ip6_route_me_harder(struct sk_buff *skb)
struct flowi6 fl6 = {
.flowi6_oif = skb->sk ? skb->sk->sk_bound_dev_if : 0,
.flowi6_mark = skb->mark,
.flowi6_uid = sock_net_uid(net, skb->sk),
.daddr = iph->daddr,
.saddr = iph->saddr,
};
+1
View File
@@ -161,6 +161,7 @@ int ping_v6_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
fl6.saddr = np->saddr;
fl6.daddr = *daddr;
fl6.flowi6_mark = sk->sk_mark;
fl6.flowi6_uid = sk->sk_uid;
fl6.fl6_icmp_type = user_icmph.icmp6_type;
fl6.fl6_icmp_code = user_icmph.icmp6_code;
security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));
+4 -2
View File
@@ -327,9 +327,10 @@ static void rawv6_err(struct sock *sk, struct sk_buff *skb,
return;
harderr = icmpv6_err_convert(type, code, &err);
if (type == ICMPV6_PKT_TOOBIG)
if (type == ICMPV6_PKT_TOOBIG) {
ip6_sk_update_pmtu(skb, sk, info);
harderr = (np->pmtudisc == IPV6_PMTUDISC_DO);
}
if (np->recverr) {
u8 *payload = skb->data;
if (!inet->hdrincl)
@@ -761,6 +762,7 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
memset(&fl6, 0, sizeof(fl6));
fl6.flowi6_mark = sk->sk_mark;
fl6.flowi6_uid = sk->sk_uid;
if (sin6) {
if (addr_len < SIN6_LEN_RFC2133)
+34 -110
View File
@@ -1079,7 +1079,10 @@ static void ip6_rt_update_pmtu(struct dst_entry *dst, u32 mtu)
{
struct rt6_info *rt6 = (struct rt6_info*)dst;
dst_confirm(dst);
if (mtu < dst_mtu(dst) && rt6->rt6i_dst.plen == 128) {
struct net *net = dev_net(dst->dev);
rt6->rt6i_flags |= RTF_MODIFIED;
if (mtu < IPV6_MIN_MTU) {
u32 features = dst_metric(dst, RTAX_FEATURES);
@@ -1088,9 +1091,40 @@ static void ip6_rt_update_pmtu(struct dst_entry *dst, u32 mtu)
dst_metric_set(dst, RTAX_FEATURES, features);
}
dst_metric_set(dst, RTAX_MTU, mtu);
rt6_update_expires(rt6, net->ipv6.sysctl.ip6_rt_mtu_expires);
}
}
void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu,
int oif, u32 mark, kuid_t uid)
{
const struct ipv6hdr *iph = (struct ipv6hdr *) skb->data;
struct dst_entry *dst;
struct flowi6 fl6;
memset(&fl6, 0, sizeof(fl6));
fl6.flowi6_oif = oif;
fl6.flowi6_mark = mark;
fl6.flowi6_flags = FLOWI_FLAG_PRECOW_METRICS;
fl6.daddr = iph->daddr;
fl6.saddr = iph->saddr;
fl6.flowlabel = (*(__be32 *) iph) & IPV6_FLOWINFO_MASK;
fl6.flowi6_uid = uid;
dst = ip6_route_output(net, NULL, &fl6);
if (!dst->error)
ip6_rt_update_pmtu(dst, ntohl(mtu));
dst_release(dst);
}
EXPORT_SYMBOL_GPL(ip6_update_pmtu);
void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, __be32 mtu)
{
ip6_update_pmtu(skb, sock_net(sk), mtu,
sk->sk_bound_dev_if, sk->sk_mark, sk->sk_uid);
}
EXPORT_SYMBOL_GPL(ip6_sk_update_pmtu);
static unsigned int ip6_default_advmss(const struct dst_entry *dst)
{
struct net_device *dev = dst->dev;
@@ -1756,116 +1790,6 @@ out:
dst_release(&rt->dst);
}
/*
* Handle ICMP "packet too big" messages
* i.e. Path MTU discovery
*/
static void rt6_do_pmtu_disc(const struct in6_addr *daddr, const struct in6_addr *saddr,
struct net *net, u32 pmtu, int ifindex)
{
struct rt6_info *rt, *nrt;
int allfrag = 0;
again:
rt = rt6_lookup(net, daddr, saddr, ifindex, 0);
if (!rt)
return;
if (rt6_check_expired(rt)) {
ip6_del_rt(rt);
goto again;
}
if (pmtu >= dst_mtu(&rt->dst))
goto out;
if (pmtu < IPV6_MIN_MTU) {
/*
* According to RFC2460, PMTU is set to the IPv6 Minimum Link
* MTU (1280) and a fragment header should always be included
* after a node receiving Too Big message reporting PMTU is
* less than the IPv6 Minimum Link MTU.
*/
pmtu = IPV6_MIN_MTU;
allfrag = 1;
}
/* New mtu received -> path was valid.
They are sent only in response to data packets,
so that this nexthop apparently is reachable. --ANK
*/
dst_confirm(&rt->dst);
/* Host route. If it is static, it would be better
not to override it, but add new one, so that
when cache entry will expire old pmtu
would return automatically.
*/
if (rt->rt6i_flags & RTF_CACHE) {
dst_metric_set(&rt->dst, RTAX_MTU, pmtu);
if (allfrag) {
u32 features = dst_metric(&rt->dst, RTAX_FEATURES);
features |= RTAX_FEATURE_ALLFRAG;
dst_metric_set(&rt->dst, RTAX_FEATURES, features);
}
rt6_update_expires(rt, net->ipv6.sysctl.ip6_rt_mtu_expires);
rt->rt6i_flags |= RTF_MODIFIED;
goto out;
}
/* Network route.
Two cases are possible:
1. It is connected route. Action: COW
2. It is gatewayed route or NONEXTHOP route. Action: clone it.
*/
if (!dst_get_neighbour_noref_raw(&rt->dst) && !(rt->rt6i_flags & RTF_NONEXTHOP))
nrt = rt6_alloc_cow(rt, daddr, saddr);
else
nrt = rt6_alloc_clone(rt, daddr);
if (nrt) {
dst_metric_set(&nrt->dst, RTAX_MTU, pmtu);
if (allfrag) {
u32 features = dst_metric(&nrt->dst, RTAX_FEATURES);
features |= RTAX_FEATURE_ALLFRAG;
dst_metric_set(&nrt->dst, RTAX_FEATURES, features);
}
/* According to RFC 1981, detecting PMTU increase shouldn't be
* happened within 5 mins, the recommended timer is 10 mins.
* Here this route expiration time is set to ip6_rt_mtu_expires
* which is 10 mins. After 10 mins the decreased pmtu is expired
* and detecting PMTU increase will be automatically happened.
*/
rt6_update_expires(nrt, net->ipv6.sysctl.ip6_rt_mtu_expires);
nrt->rt6i_flags |= RTF_DYNAMIC;
ip6_ins_rt(nrt);
}
out:
dst_release(&rt->dst);
}
void rt6_pmtu_discovery(const struct in6_addr *daddr, const struct in6_addr *saddr,
struct net_device *dev, u32 pmtu)
{
struct net *net = dev_net(dev);
/*
* RFC 1981 states that a node "MUST reduce the size of the packets it
* is sending along the path" that caused the Packet Too Big message.
* Since it's not possible in the general case to determine which
* interface was used to send the original packet, we update the MTU
* on the interface that will be used to send future packets. We also
* update the MTU on the interface that received the Packet Too Big in
* case the original packet was forced out that interface with
* SO_BINDTODEVICE or similar. This is the next best thing to the
* correct behaviour, which would be to update the MTU on all
* interfaces.
*/
rt6_do_pmtu_disc(daddr, saddr, net, pmtu, 0);
rt6_do_pmtu_disc(daddr, saddr, net, pmtu, dev->ifindex);
}
/*
* Misc support functions
*/
+1
View File
@@ -246,6 +246,7 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
fl6.flowi6_mark = inet_rsk(req)->ir_mark;
fl6.fl6_dport = inet_rsk(req)->rmt_port;
fl6.fl6_sport = inet_sk(sk)->inet_sport;
fl6.flowi6_uid = sk->sk_uid;
security_req_classify_flow(req, flowi6_to_flowi(&fl6));
dst = ip6_dst_lookup_flow(sk, &fl6, final_p, false);
+15 -8
View File
@@ -252,6 +252,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
fl6.flowi6_mark = sk->sk_mark;
fl6.fl6_dport = usin->sin6_port;
fl6.fl6_sport = inet->inet_sport;
fl6.flowi6_uid = sk->sk_uid;
opt = rcu_dereference_protected(np->opt, sock_owned_by_user(sk));
final_p = fl6_update_dst(&fl6, opt, &final);
@@ -406,6 +407,7 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
fl6.flowi6_mark = sk->sk_mark;
fl6.fl6_dport = inet->inet_dport;
fl6.fl6_sport = inet->inet_sport;
fl6.flowi6_uid = sk->sk_uid;
security_skb_classify_flow(skb, flowi6_to_flowi(&fl6));
dst = ip6_dst_lookup_flow(sk, &fl6, NULL, false);
@@ -417,6 +419,8 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
} else
dst_hold(dst);
dst->ops->update_pmtu(dst, ntohl(info));
if (inet_csk(sk)->icsk_pmtu_cookie > dst_mtu(dst)) {
tcp_sync_mss(sk, dst_mtu(dst));
tcp_simple_retransmit(sk);
@@ -829,14 +833,15 @@ static int tcp6_gro_complete(struct sk_buff *skb)
return tcp_gro_complete(skb);
}
static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,
u32 ts, struct tcp_md5sig_key *key, int rst, u8 tclass)
static void tcp_v6_send_response(struct sock *sk, struct sk_buff *skb, u32 seq,
u32 ack, u32 win, u32 ts,
struct tcp_md5sig_key *key, int rst, u8 tclass)
{
const struct tcphdr *th = tcp_hdr(skb);
struct tcphdr *t1;
struct sk_buff *buff;
struct flowi6 fl6;
struct net *net = dev_net(skb_dst(skb)->dev);
struct net *net = sk ? sock_net(sk) : dev_net(skb_dst(skb)->dev);
struct sock *ctl_sk = net->ipv6.tcp_sk;
unsigned int tot_len = sizeof(struct tcphdr);
struct dst_entry *dst;
@@ -904,6 +909,7 @@ static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,
fl6.flowi6_mark = IP6_REPLY_MARK(net, skb->mark);
fl6.fl6_dport = t1->dest;
fl6.fl6_sport = t1->source;
fl6.flowi6_uid = sock_net_uid(net, sk && sk_fullsock(sk) ? sk : NULL);
security_skb_classify_flow(skb, flowi6_to_flowi(&fl6));
/* Pass a socket to ip6_dst_lookup either it is for RST
@@ -977,7 +983,7 @@ static void tcp_v6_send_reset(struct sock *sk, struct sk_buff *skb)
ack_seq = ntohl(th->seq) + th->syn + th->fin + skb->len -
(th->doff << 2);
tcp_v6_send_response(skb, seq, ack_seq, 0, 0, key, 1, 0);
tcp_v6_send_response(sk, skb, seq, ack_seq, 0, 0, key, 1, 0);
#ifdef CONFIG_TCP_MD5SIG
release_sk1:
@@ -988,10 +994,11 @@ release_sk1:
#endif
}
static void tcp_v6_send_ack(struct sk_buff *skb, u32 seq, u32 ack, u32 win, u32 ts,
static void tcp_v6_send_ack(struct sock *sk, struct sk_buff *skb,
u32 seq, u32 ack, u32 win, u32 ts,
struct tcp_md5sig_key *key, u8 tclass)
{
tcp_v6_send_response(skb, seq, ack, win, ts, key, 0, tclass);
tcp_v6_send_response(sk, skb, seq, ack, win, ts, key, 0, tclass);
}
static void tcp_v6_timewait_ack(struct sock *sk, struct sk_buff *skb)
@@ -999,7 +1006,7 @@ static void tcp_v6_timewait_ack(struct sock *sk, struct sk_buff *skb)
struct inet_timewait_sock *tw = inet_twsk(sk);
struct tcp_timewait_sock *tcptw = tcp_twsk(sk);
tcp_v6_send_ack(skb, tcptw->tw_snd_nxt, tcptw->tw_rcv_nxt,
tcp_v6_send_ack(sk, skb, tcptw->tw_snd_nxt, tcptw->tw_rcv_nxt,
tcptw->tw_rcv_wnd >> tw->tw_rcv_wscale,
tcptw->tw_ts_recent, tcp_twsk_md5_key(tcptw),
tw->tw_tclass);
@@ -1010,7 +1017,7 @@ static void tcp_v6_timewait_ack(struct sock *sk, struct sk_buff *skb)
static void tcp_v6_reqsk_send_ack(struct sock *sk, struct sk_buff *skb,
struct request_sock *req)
{
tcp_v6_send_ack(skb, tcp_rsk(req)->snt_isn + 1, tcp_rsk(req)->rcv_isn + 1, req->rcv_wnd, req->ts_recent,
tcp_v6_send_ack(sk, skb, tcp_rsk(req)->snt_isn + 1, tcp_rsk(req)->rcv_isn + 1, req->rcv_wnd, req->ts_recent,
tcp_v6_md5_do_lookup(sk, &ipv6_hdr(skb)->daddr), 0);
}
+4
View File
@@ -478,6 +478,9 @@ void __udp6_lib_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
if (sk == NULL)
return;
if (type == ICMPV6_PKT_TOOBIG)
ip6_sk_update_pmtu(skb, sk, info);
np = inet6_sk(sk);
if (!icmpv6_err_convert(type, code, &err) && !np->recverr)
@@ -1092,6 +1095,7 @@ do_udp_sendmsg:
fl6.flowi6_oif = np->sticky_pktinfo.ipi6_ifindex;
fl6.flowi6_mark = sk->sk_mark;
fl6.flowi6_uid = sk->sk_uid;
if (msg->msg_controllen) {
opt = &opt_space;
+4 -4
View File
@@ -614,7 +614,7 @@ static int llc_wait_data(struct sock *sk, long timeo)
if (signal_pending(current))
break;
rc = 0;
if (sk_wait_data(sk, &timeo))
if (sk_wait_data(sk, &timeo, NULL))
break;
}
return rc;
@@ -803,7 +803,7 @@ static int llc_ui_recvmsg(struct kiocb *iocb, struct socket *sock,
release_sock(sk);
lock_sock(sk);
} else
sk_wait_data(sk, &timeo);
sk_wait_data(sk, &timeo, NULL);
if ((flags & MSG_PEEK) && peek_seq != llc->copied_seq) {
if (net_ratelimit())
@@ -841,7 +841,7 @@ static int llc_ui_recvmsg(struct kiocb *iocb, struct socket *sock,
if (!(flags & MSG_PEEK)) {
spin_lock_irqsave(&sk->sk_receive_queue.lock, cpu_flags);
sk_eat_skb(sk, skb, 0);
sk_eat_skb(sk, skb, false);
spin_unlock_irqrestore(&sk->sk_receive_queue.lock, cpu_flags);
*seq = 0;
}
@@ -864,7 +864,7 @@ copy_uaddr:
if (!(flags & MSG_PEEK)) {
spin_lock_irqsave(&sk->sk_receive_queue.lock, cpu_flags);
sk_eat_skb(sk, skb, 0);
sk_eat_skb(sk, skb, false);
spin_unlock_irqrestore(&sk->sk_receive_queue.lock, cpu_flags);
*seq = 0;
}

Some files were not shown because too many files have changed in this diff Show More