net/ping: handle protocol mismatching scenario

ping_lookup() may return a wrong sock if sk_buff's and sock's protocols
dont' match. For example, sk_buff's protocol is ETH_P_IPV6, but sock's
sk_family is AF_INET, in that case, if sk->sk_bound_dev_if is zero, a wrong
sock will be returned.
the fix is to "continue" the searching, if no matching, return NULL.

[cherry-pick of net 91a0b603469069cdcce4d572b7525ffc9fd352a6]

Bug: 18512516
Change-Id: I520223ce53c0d4e155c37d6b65a03489cc7fd494
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
Cc: James Morris <jmorris@namei.org>
Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Cc: Patrick McHardy <kaber@trash.net>
Cc: netdev@vger.kernel.org
Cc: stable@vger.kernel.org
Signed-off-by: Jane Zhou <a17711@motorola.com>
Signed-off-by: Yiwei Zhao <gbjc64@motorola.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>

https://www.codeaurora.org/cgit/quic/la/kernel/msm/commit/?h=aosp-common/android-3.4&id=beb4b5ffffc5cd44241273e982c6fa265b79f716
Patch 3.4.105 using patch -p1 < "patch is modified for my needs"
TTY: msm_smd_tty: Fix simultaneous open/close race condition

smd_tty_close currently has a variable that depends on a race
condition with tty_port_open. This causes a null-pointer dereference
when the same port is simultaneously being opened/closed.

Use data from a static array instead of the variable to eliminate
the race condition.

Signed-off-by: Steven Cahail <scahail@codeaurora.org>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
netfilter: x_tables: fix ordering of jumpstack allocation and table update

During kernel stability testing on an SMP ARMv7 system, Yalin Wang
reported the following panic from the netfilter code:

  1fe0: 0000001c 5e2d3b10 4007e779 4009e110 60000010 00000032 ff565656 ff545454
  [<c06c48dc>] (ipt_do_table+0x448/0x584) from [<c0655ef0>] (nf_iterate+0x48/0x7c)
  [<c0655ef0>] (nf_iterate+0x48/0x7c) from [<c0655f7c>] (nf_hook_slow+0x58/0x104)
  [<c0655f7c>] (nf_hook_slow+0x58/0x104) from [<c0683bbc>] (ip_local_deliver+0x88/0xa8)
  [<c0683bbc>] (ip_local_deliver+0x88/0xa8) from [<c0683718>] (ip_rcv_finish+0x418/0x43c)
  [<c0683718>] (ip_rcv_finish+0x418/0x43c) from [<c062b1c4>] (__netif_receive_skb+0x4cc/0x598)
  [<c062b1c4>] (__netif_receive_skb+0x4cc/0x598) from [<c062b314>] (process_backlog+0x84/0x158)
  [<c062b314>] (process_backlog+0x84/0x158) from [<c062de84>] (net_rx_action+0x70/0x1dc)
  [<c062de84>] (net_rx_action+0x70/0x1dc) from [<c0088230>] (__do_softirq+0x11c/0x27c)
  [<c0088230>] (__do_softirq+0x11c/0x27c) from [<c008857c>] (do_softirq+0x44/0x50)
  [<c008857c>] (do_softirq+0x44/0x50) from [<c0088614>] (local_bh_enable_ip+0x8c/0xd0)
  [<c0088614>] (local_bh_enable_ip+0x8c/0xd0) from [<c06b0330>] (inet_stream_connect+0x164/0x298)
  [<c06b0330>] (inet_stream_connect+0x164/0x298) from [<c061d68c>] (sys_connect+0x88/0xc8)
  [<c061d68c>] (sys_connect+0x88/0xc8) from [<c000e340>] (ret_fast_syscall+0x0/0x30)
  Code: 2a000021 e59d2028 e59de01c e59f011c (e7824103)
  ---[ end trace da227214a82491bd ]---
  Kernel panic - not syncing: Fatal exception in interrupt

This comes about because CPU1 is executing xt_replace_table in response
to a setsockopt syscall, resulting in:

	ret = xt_jumpstack_alloc(newinfo);
		--> newinfo->jumpstack = kzalloc(size, GFP_KERNEL);

	[...]

	table->private = newinfo;
	newinfo->initial_entries = private->initial_entries;

Meanwhile, CPU0 is handling the network receive path and ends up in
ipt_do_table, resulting in:

	private = table->private;

	[...]

	jumpstack  = (struct ipt_entry **)private->jumpstack[cpu];

On weakly ordered memory architectures, the writes to table->private
and newinfo->jumpstack from CPU1 can be observed out of order by CPU0.
Furthermore, on architectures which don't respect ordering of address
dependencies (i.e. Alpha), the reads from CPU0 can also be re-ordered.

This patch adds an smp_wmb() before the assignment to table->private
(which is essentially publishing newinfo) to ensure that all writes to
newinfo will be observed before plugging it into the table structure.
A dependent-read barrier is also added on the consumer sides, to ensure
the same ordering requirements are also respected there.

Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reported-by: Wang, Yalin <Yalin.Wang@sonymobile.com>
Tested-by: Wang, Yalin <Yalin.Wang@sonymobile.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Osvaldo Banuelos <osvaldob@codeaurora.org>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
diag: Handle spinlock correctly

Currently, if failure happens while writing data over to USB,
spinlock is not released. This leads to deadlock and kernel panic
which re-accessing it. This patch fixes that issue.

Signed-off-by: Katish Paran <kparan@codeaurora.org>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
USB: composite: Fix issue of get interface returning wrong altsetting

Currently composite driver will block and doesn't forward the set
interface with zero index vlaue after set configuration request.
This leads to returning wrong altsetting value for get interface
request from Host for interfaces that does support multiple
alternatesettings when host sends set interface with one followed
by set interface with zero index value after device is configured.
This could cause USB3.0 complaince test fail. Hence fix this value
by forwarding set interface request for interfaces that does
support mutliple altsettings.

Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
alucard_hotplug: speed optimization.
alucard_hotplug: removed useless get_online_cpus()..put_online_cpus().
Revert "genirq: Add IRQS_PENDING for nested and simple irq". It caused kernel panic on phone charging.

This reverts commit 00ef44d6265f7ab8aa5c4b6c69c978d909cf8209.
Revert "genirq: Allow check_wakeup_irqs to notice level-triggered interrupts". It caused kernel panic on phone charging.

This reverts commit f066d00f119ddc1aca99aae2c405d30389b8763f.
Fix LCD notifi functions in lge_touch_core and sweep2wake
KERNEL BUILD: get rid of LOKI in kernel zip package. + cleanups.
RECOVERY BUMP: get rid of loki trace. + unify scripts.
auto_sleep: allow sys_sync also if power_suspend is not defined and PM_SYNC_BEFORE_SUSPEND is defined.
Turn OFF HTC ASYNC_FSYNC code for all models.

FS was changed a lot. i dont see any need for this code for now.
WIFI: do not use powersuspend for WIFI, it's has it's own PM triggers.
HOTPLUGS: update suspend code selectors. idea by @Alucard24

If we have LCD_NOTIFY but wish to use POWERUSPEND now it's possible.

If only LCD_NOTIFY then it's will be selected by auto
MMC: Reverting all WAKE/SUSPEND changes to fix MMC hangs during suspend.

This reverts:
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/e439062ac344a9bd88b5560f58b6ef654e35c60a
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/f436acc570d16bf330b875fcd94b077e55051a58
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/545d315391b0613932adfd373b934767184f5e21
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/1a6c77ca40177f4ff8f6af60ab8197cd16a858c6
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/001fdb4ca1cd06ba4176567d3eec67f28f900dd1
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/0049ab570ada4b84909e43f5f89db47c01951e94
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/6241623da43deeaaef849ac451ed6b2b6d499898
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/ae8695e2fd8021f64c4748f1b0ebc872ebc1778b
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/38f752bed0ea0be8573a765e7ea84ba4c6424e3a
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/0ec4df36a63aee16f2d37cdc8ef0400d7433ba36
https://github.com/dorimanx/Dorimanx-LG-G2-D802-Kernel/commit/8b00c3d522e4332f789830b8181bb8f60bb810f4

I need stability, i dont see any change with all that added. but i see dead MMC...
now ok after many tests.
CONFIG UPDATE: found BUG with MMC config. now all OK again. READ MORE.

I was not able to set discard on any mounted partitions! and to use trim
when mmc in suspend. that cause SOD, kernel hang in mmc suspend/resume.

by default LG dont use deffered suspend, so i have disabled.
we need the HPI! and it's was disabled, that caused the major SOD bugs.
once ENABLED, all OK now.

About the SHA1_ARM_NEON && SHA512_ARM_NEON seems to brake L2TP VPN.
Need to test if OK now. was working in kernel 8.5 then stop in 8.6
when i added this code. other things have no connection to vpn/encrypt
so it's must be this.
cpufreq_intellimm: intelliminmax cpu governor initial baseline commit

intelliminmax (intellimm) governor is designed to work with the newer SOCs with fixed voltage rails (ie MSM8974+ SOCs).  It is designed to work within those
fixed voltage ranges in order to maximize battery performance while creating a
smooth UI operations.

Copyright 2014 Paul Reioux <aka faux123>

Signed-off-by: Paul Reioux <reioux@gmail.com>

WIP: Intellimm: remove unused code and change tblmap algorithm

tblmap: add power-save frequencies for the first 5 entries

Signed-off-by: Paul Reioux <reioux@gmail.com>

WIP: intellimm: more tweaks and table clean up

Signed-off-by: Paul Reioux <reioux@gmail.com>

WIP: intellimm: more tweaks

Signed-off-by: Paul Reioux <reioux@gmail.com>

WIP: intellimm: clean up derpy logic

Signed-off-by: Paul Reioux <reioux@gmail.com>

WIP: intellimm: final clean up and algorithm tweaks

Signed-off-by: Paul Reioux <reioux@gmail.com>

WIP: intellimm: finalizing part 2

Signed-off-by: Paul Reioux <reioux@gmail.com>

WIP: intellimm: finalizing part 3

add back burst for smoother UI

Signed-off-by: Paul Reioux <reioux@gmail.com>

intellimm: fix div by zero derp

Signed-off-by: Paul Reioux <reioux@gmail.com>