Commit graph

878,508 commits

Author SHA1 Message Date
Marek Vasut
5d92d834aa net: ks8851-ml: Fix IRQ handling and locking
[ Upstream commit 44343418d0f2f623cb9da6f5000df793131cbe3b ]

The KS8851 requires that packet RX and TX are mutually exclusive.
Currently, the driver hopes to achieve this by disabling interrupt
from the card by writing the card registers and by disabling the
interrupt on the interrupt controller. This however is racy on SMP.

Replace this approach by expanding the spinlock used around the
ks_start_xmit() TX path to ks_irq() RX path to assure true mutual
exclusion and remove the interrupt enabling/disabling, which is
now not needed anymore. Furthermore, disable interrupts also in
ks_net_stop(), which was missing before.

Note that a massive improvement here would be to re-use the KS8851
driver approach, which is to move the TX path into a worker thread,
interrupt handling to threaded interrupt, and synchronize everything
with mutexes, but that would be a much bigger rework, for a separate
patch.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: David S. Miller <davem@davemloft.net>
Cc: Lukas Wunner <lukas@wunner.de>
Cc: Petr Stetiar <ynezz@true.cz>
Cc: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:50 +01:00
Daniele Palmas
d939f3389f net: usb: qmi_wwan: restore mtu min/max values after raw_ip switch
[ Upstream commit eae7172f8141eb98e64e6e81acc9e9d5b2add127 ]

usbnet creates network interfaces with min_mtu = 0 and
max_mtu = ETH_MAX_MTU.

These values are not modified by qmi_wwan when the network interface
is created initially, allowing, for example, to set mtu greater than 1500.

When a raw_ip switch is done (raw_ip set to 'Y', then set to 'N') the mtu
values for the network interface are set through ether_setup, with
min_mtu = ETH_MIN_MTU and max_mtu = ETH_DATA_LEN, not allowing anymore to
set mtu greater than 1500 (error: mtu greater than device maximum).

The patch restores the original min/max mtu values set by usbnet after a
raw_ip switch.

Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
Acked-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:50 +01:00
Igor Druzhinin
6c663120ec scsi: libfc: free response frame from GPN_ID
[ Upstream commit ff6993bb79b9f99bdac0b5378169052931b65432 ]

fc_disc_gpn_id_resp() should be the last function using it so free it here
to avoid memory leak.

Link: https://lore.kernel.org/r/1579013000-14570-2-git-send-email-igor.druzhinin@citrix.com
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:50 +01:00
Johannes Berg
079e9ad794 cfg80211: check reg_rule for NULL in handle_channel_custom()
[ Upstream commit a7ee7d44b57c9ae174088e53a668852b7f4f452d ]

We may end up with a NULL reg_rule after the loop in
handle_channel_custom() if the bandwidth didn't fit,
check if this is the case and bail out if so.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Link: https://lore.kernel.org/r/20200221104449.3b558a50201c.I4ad3725c4dacaefd2d18d3cc65ba6d18acd5dbfe@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:49 +01:00
Tom Zanussi
a6f7e69cfa tracing: Fix number printing bug in print_synth_event()
[ Upstream commit 784bd0847eda032ed2f3522f87250655a18c0190 ]

Fix a varargs-related bug in print_synth_event() which resulted in
strange output and oopses on 32-bit x86 systems. The problem is that
trace_seq_printf() expects the varargs to match the format string, but
print_synth_event() was always passing u64 values regardless.  This
results in unspecified behavior when unpacking with va_arg() in
trace_seq_printf().

Add a function that takes the size into account when calling
trace_seq_printf().

Before:

  modprobe-1731  [003] ....   919.039758: gen_synth_test: next_pid_field=777(null)next_comm_field=hula hoops ts_ns=1000000 ts_ms=1000 cpu=3(null)my_string_field=thneed my_int_field=598(null)

After:

 insmod-1136  [001] ....    36.634590: gen_synth_test: next_pid_field=777 next_comm_field=hula hoops ts_ns=1000000 ts_ms=1000 cpu=1 my_string_field=thneed my_int_field=598

Link: http://lkml.kernel.org/r/a9b59eb515dbbd7d4abe53b347dccf7a8e285657.1581720155.git.zanussi@kernel.org

Reported-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Tom Zanussi <zanussi@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:49 +01:00
Michael Ellerman
c35aa36fec selftests/rseq: Fix out-of-tree compilation
[ Upstream commit ef89d0545132d685f73da6f58b7e7fe002536f91 ]

Currently if you build with O=... the rseq tests don't build:

  $ make O=$PWD/output -C tools/testing/selftests/ TARGETS=rseq
  make: Entering directory '/linux/tools/testing/selftests'
  ...
  make[1]: Entering directory '/linux/tools/testing/selftests/rseq'
  gcc -O2 -Wall -g -I./ -I../../../../usr/include/ -L./ -Wl,-rpath=./  -shared -fPIC rseq.c -lpthread -o /linux/output/rseq/librseq.so
  gcc -O2 -Wall -g -I./ -I../../../../usr/include/ -L./ -Wl,-rpath=./  basic_test.c -lpthread -lrseq -o /linux/output/rseq/basic_test
  /usr/bin/ld: cannot find -lrseq
  collect2: error: ld returned 1 exit status

This is because the library search path points to the source
directory, not the output.

We can fix it by changing the library search path to $(OUTPUT).

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:49 +01:00
Hanno Zulla
dd0d2d6ab6 HID: hid-bigbenff: fix race condition for scheduled work during removal
[ Upstream commit 4eb1b01de5b9d8596d6c103efcf1a15cfc1bedf7 ]

It's possible that there is scheduled work left while the device is
already being removed, which can cause a kernel crash. Adding a flag
will avoid this.

Signed-off-by: Hanno Zulla <kontakt@hanno.de>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:49 +01:00
Hanno Zulla
ccb747d805 HID: hid-bigbenff: call hid_hw_stop() in case of error
[ Upstream commit 976a54d0f4202cb412a3b1fc7f117e1d97db35f3 ]

It's required to call hid_hw_stop() once hid_hw_start() was called
previously, so error cases need to handle this. Also, hid_hw_close() is
not necessary during removal.

Signed-off-by: Hanno Zulla <kontakt@hanno.de>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:49 +01:00
Hanno Zulla
1bc271dd39 HID: hid-bigbenff: fix general protection fault caused by double kfree
[ Upstream commit 789a2c250340666220fa74bc6c8f58497e3863b3 ]

The struct *bigben was allocated via devm_kzalloc() and then used as a
parameter in input_ff_create_memless(). This caused a double kfree
during removal of the device, since both the managed resource API and
ml_ff_destroy() in drivers/input/ff-memless.c would call kfree() on it.

Signed-off-by: Hanno Zulla <kontakt@hanno.de>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:48 +01:00
Kai-Heng Feng
190e929e6c HID: i2c-hid: add Trekstor Surfbook E11B to descriptor override
[ Upstream commit be0aba826c4a6ba5929def1962a90d6127871969 ]

The Surfbook E11B uses the SIPODEV SP1064 touchpad, which does not supply
descriptors, so it has to be added to the override list.

BugLink: https://bugs.launchpad.net/bugs/1858299
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:48 +01:00
Mika Westerberg
87bd74b775 ACPI: watchdog: Set default timeout in probe
[ Upstream commit cabe17d0173ab04bd3f87b8199ae75f43f1ea473 ]

If the BIOS default timeout for the watchdog is too small userspace may
not have enough time to configure new timeout after opening the device
before the system is already reset. For this reason program default
timeout of 30 seconds in the driver probe and allow userspace to change
this from command line or through module parameter (wdat_wdt.timeout).

Reported-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:48 +01:00
Mansour Behabadi
65b4449741 HID: apple: Add support for recent firmware on Magic Keyboards
[ Upstream commit e433be929e63265b7412478eb7ff271467aee2d7 ]

Magic Keyboards with more recent firmware (0x0100) report Fn key differently.
Without this patch, Fn key may not behave as expected and may not be
configurable via hid_apple fnmode module parameter.

Signed-off-by: Mansour Behabadi <mansour@oxplot.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:47 +01:00
Jean Delvare
20eed76927 ACPI: watchdog: Allow disabling WDAT at boot
[ Upstream commit 3f9e12e0df012c4a9a7fd7eb0d3ae69b459d6b2c ]

In case the WDAT interface is broken, give the user an option to
ignore it to let a native driver bind to the watchdog device instead.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:47 +01:00
Felix Kuehling
f3c478104a drm/amdgpu: Fix TLB invalidation request when using semaphore
[ Upstream commit 37c58ddf57364d1a636850bb8ba6acbe1e16195e ]

Use a more meaningful variable name for the invalidation request
that is distinct from the tmp variable that gets overwritten when
acquiring the invalidation semaphore.

Fixes: 4ed8a03740d0 ("drm/amdgpu: invalidate mmhub semaphore workaround in gmc9/gmc10")
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Yong Zhao <Yong.Zhao@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:47 +01:00
Cong Wang
f6fccb0a0e netfilter: xt_hashlimit: unregister proc file before releasing mutex
[ Upstream commit 99b79c3900d4627672c85d9f344b5b0f06bc2a4d ]

Before releasing the global mutex, we only unlink the hashtable
from the hash list, its proc file is still not unregistered at
this point. So syzbot could trigger a race condition where a
parallel htable_create() could register the same file immediately
after the mutex is released.

Move htable_remove_proc_entry() back to mutex protection to
fix this. And, fold htable_destroy() into htable_put() to make
the code slightly easier to understand.

Reported-and-tested-by: syzbot+d195fd3b9a364ddd6731@syzkaller.appspotmail.com
Fixes: c4a3922d2d20 ("netfilter: xt_hashlimit: reduce hashlimit_mutex scope for htable_put()")
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:46 +01:00
Florian Westphal
536942bf70 netfilter: hashlimit: do not use indirect calls during gc
[ Upstream commit 28b3a4270c0fc064557e409111f2a678e64b6fa7 ]

no need, just use a simple boolean to indicate we want to reap all
entries.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-03-21 08:11:46 +01:00
Hyesoo Yu
6206069211 ANDROID: staging: ion: Export query function to be used in modules
Export the ion_query_heaps_kernel to allow the module
to get the registered heap information.

Bug: 149961819

Signed-off-by: Hyesoo Yu <hyesoo.yu@samsung.com>
Change-Id: I3756ef0cbd17611593c8d2f45e46476a864faaec
2020-03-20 20:11:35 +00:00
Balakrishna Godavarthi
767a92e5d8 UPSTREAM: Bluetooth: hci_qca: Add support for Qualcomm Bluetooth SoC WCN3991
This patch add support for WCN3991 i.e. current values and fw download
support.

Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
(cherry picked from commit 7d250a062f75e6ee8368b64ac6ff1e09fbb6783d)
Signed-off-by: John Stultz <john.stultz@linaro.org>
Change-Id: I46231dd50e394fdd8b0fdbdf42a74e070712798b
2020-03-20 16:08:04 +00:00
Balakrishna Godavarthi
5d894c0f47 UPSTREAM: Bluetooth: btqca: Rename ROME specific variables to generic variables
Variables which are named with rome are commonly used for all the
BT SoC's. Instead of continuing further, renamed them to generic
name.

Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
(cherry picked from commit e303d124b70920ef86b26d792d8b959166a28f6e)
Signed-off-by: John Stultz <john.stultz@linaro.org>
Change-Id: I89c118b23694cf8f50b6b936207ecb90fc027423
2020-03-20 16:07:50 +00:00
Sandeep Patil
4d8b83112a ANDROID: ABI: Update abi after enabling CONFIG_USB_PHY
Bug: 151969174
Test: Builds

Signed-off-by: Sandeep Patil <sspatil@google.com>
Change-Id: I85615b4e1c250ec6397917a484fc7710660597c2
2020-03-20 06:54:01 -07:00
Sandeep Patil
f7941b37ab ANDROID: GKI: Enable CONFIG_USB_PHY for usb drivers like dwc3
The configuration is only selected by other drivers, so add it in
the list of hidden gki configurations. USB_PHY also autoselects
CONFIG_EXTCON, so EXTCON now disappears from gki_defconfig

Bug: 151969174
Test: Builds

Signed-off-by: Sandeep Patil <sspatil@google.com>
Change-Id: I0cc55d2f06fcb5a46daf0578629e1f0a653ac48b
2020-03-20 06:48:55 -07:00
Quentin Perret
7e72faf22d ANDROID: Update abi_gki_aarch64_unisoc_whitelist
Now that CONFIG_DEBUG_PREEMPT is =n, some symbols are no longer
exported in the kernel. Remove them from the Unisoc whitelist.

Bug: 149980028
Bug: 147075469
Signed-off-by: Quentin Perret <qperret@google.com>
Change-Id: Ida3c018eee16a2404fd5f37a417457ccf81a45d2
2020-03-20 10:26:50 +00:00
Greg Kroah-Hartman
4798d736c0 ANDROID: GKI: USB: add Android ABI padding to some structures
To try to mitigate potential future USB api changes, add some padding to
the following structures:
	struct usb_interface
	struct usb_host_bos
	struct usb_bus
	struct usb_device
	struct usb_driver
	struct urb
	struct usb_hcd
	struct hc_driver
	struct usb_tt
	struct usbnet
	struct driver_info (for usbnet driver)

Based on a patch from Oliver Neukum <oneukum@suse.de> from the SLES
kernel.

Leaf changes summary: 10 artifacts changed
Changed leaf types summary: 10 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct driver_info at usbnet.h:94:1' changed:
  type size changed from 1152 to 1280 (in bits)
  2 data member insertions:
    'u64 driver_info::android_kabi_reserved1', at offset 1152 (in bits) at usbnet.h:183:1
    'u64 driver_info::android_kabi_reserved2', at offset 1216 (in bits) at usbnet.h:184:1
  10 impacted interfaces:

'struct hc_driver at hcd.h:249:1' changed:
  type size changed from 2880 to 3136 (in bits)
  4 data member insertions:
    'u64 hc_driver::android_kabi_reserved1', at offset 2880 (in bits) at hcd.h:419:1
    'u64 hc_driver::android_kabi_reserved2', at offset 2944 (in bits) at hcd.h:420:1
    'u64 hc_driver::android_kabi_reserved3', at offset 3008 (in bits) at hcd.h:421:1
    'u64 hc_driver::android_kabi_reserved4', at offset 3072 (in bits) at hcd.h:422:1
  16 impacted interfaces:

'struct urb at usb.h:1550:1' changed:
  type size changed from 1472 to 1728 (in bits)
  4 data member insertions:
    'u64 urb::android_kabi_reserved1', at offset 1472 (in bits) at usb.h:1613:1
    'u64 urb::android_kabi_reserved2', at offset 1536 (in bits) at usb.h:1614:1
    'u64 urb::android_kabi_reserved3', at offset 1600 (in bits) at usb.h:1615:1
    'u64 urb::android_kabi_reserved4', at offset 1664 (in bits) at usb.h:1616:1
  39 impacted interfaces:

'struct usb_bus at usb.h:424:1' changed:
  type size changed from 1024 to 1280 (in bits)
  4 data member insertions:
    'u64 usb_bus::android_kabi_reserved1', at offset 1024 (in bits) at usb.h:480:1
    'u64 usb_bus::android_kabi_reserved2', at offset 1088 (in bits) at usb.h:481:1
    'u64 usb_bus::android_kabi_reserved3', at offset 1152 (in bits) at usb.h:482:1
    'u64 usb_bus::android_kabi_reserved4', at offset 1216 (in bits) at usb.h:483:1
  54 impacted interfaces:

'struct usb_device at usb.h:631:1' changed:
  type size changed from 11712 to 11968 (in bits)
  4 data member insertions:
    'u64 usb_device::android_kabi_reserved1', at offset 11712 (in bits) at usb.h:728:1
    'u64 usb_device::android_kabi_reserved2', at offset 11776 (in bits) at usb.h:729:1
    'u64 usb_device::android_kabi_reserved3', at offset 11840 (in bits) at usb.h:730:1
    'u64 usb_device::android_kabi_reserved4', at offset 11904 (in bits) at usb.h:731:1
  54 impacted interfaces:

'struct usb_driver at usb.h:1183:1' changed:
  type size changed from 2432 to 2688 (in bits)
  4 data member insertions:
    'u64 usb_driver::android_kabi_reserved1', at offset 2432 (in bits) at usb.h:1232:1
    'u64 usb_driver::android_kabi_reserved2', at offset 2496 (in bits) at usb.h:1233:1
    'u64 usb_driver::android_kabi_reserved3', at offset 2560 (in bits) at usb.h🔢1
    'u64 usb_driver::android_kabi_reserved4', at offset 2624 (in bits) at usb.h:1235:1
  4 impacted interfaces:

'struct usb_hcd at hcd.h:81:1' changed:
  type size changed from 4736 to 5248 (in bits)
  4 data member insertions:
    'u64 usb_hcd::android_kabi_reserved1', at offset 4992 (in bits) at hcd.h:229:1
    'u64 usb_hcd::android_kabi_reserved2', at offset 5056 (in bits) at hcd.h:230:1
    'u64 usb_hcd::android_kabi_reserved3', at offset 5120 (in bits) at hcd.h:231:1
    'u64 usb_hcd::android_kabi_reserved4', at offset 5184 (in bits) at hcd.h:232:1
  16 impacted interfaces:

'struct usb_host_bos at usb.h:396:1' changed:
  type size changed from 384 to 640 (in bits)
  4 data member insertions:
    'u64 usb_host_bos::android_kabi_reserved1', at offset 384 (in bits) at usb.h:412:1
    'u64 usb_host_bos::android_kabi_reserved2', at offset 448 (in bits) at usb.h:413:1
    'u64 usb_host_bos::android_kabi_reserved3', at offset 512 (in bits) at usb.h:414:1
    'u64 usb_host_bos::android_kabi_reserved4', at offset 576 (in bits) at usb.h:415:1
  54 impacted interfaces:

'struct usb_interface at usb.h:232:1' changed:
  type size changed from 7360 to 7616 (in bits)
  4 data member insertions:
    'u64 usb_interface::android_kabi_reserved1', at offset 7360 (in bits) at usb.h:262:1
    'u64 usb_interface::android_kabi_reserved2', at offset 7424 (in bits) at usb.h:263:1
    'u64 usb_interface::android_kabi_reserved3', at offset 7488 (in bits) at usb.h:264:1
    'u64 usb_interface::android_kabi_reserved4', at offset 7552 (in bits) at usb.h:265:1
  73 impacted interfaces:

'struct usbnet at usbnet.h:27:1' changed:
  type size changed from 4736 to 4992 (in bits)
  4 data member insertions:
    'u64 usbnet::android_kabi_reserved1', at offset 4736 (in bits) at usbnet.h:89:1
    'u64 usbnet::android_kabi_reserved2', at offset 4800 (in bits) at usbnet.h:90:1
    'u64 usbnet::android_kabi_reserved3', at offset 4864 (in bits) at usbnet.h:91:1
    'u64 usbnet::android_kabi_reserved4', at offset 4928 (in bits) at usbnet.h:92:1
  10 impacted interfaces:

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ie9e246d9333ac70fc9cc2b0bf7cb466a8ffdb6de
2020-03-20 09:27:54 +01:00
Eric Biggers
dcd37f95a3 FROMLIST: ubifs: wire up FS_IOC_GET_ENCRYPTION_NONCE
This new ioctl retrieves a file's encryption nonce, which is useful for
testing.  See the corresponding fs/crypto/ patch for more details.

Bug: 151100202
Link: https://lore.kernel.org/r/20200314205052.93294-5-ebiggers@kernel.org
Change-Id: I8f15e873b41e036bc039119a579beac1b78f937b
Signed-off-by: Eric Biggers <ebiggers@google.com>
2020-03-19 11:29:03 -07:00
Eric Biggers
7d7ab391dc FROMLIST: f2fs: wire up FS_IOC_GET_ENCRYPTION_NONCE
This new ioctl retrieves a file's encryption nonce, which is useful for
testing.  See the corresponding fs/crypto/ patch for more details.

Bug: 151100202
Link: https://lore.kernel.org/r/20200314205052.93294-4-ebiggers@kernel.org
Change-Id: I26037efc77774c04951da887d8557a15ce6a23ed
Signed-off-by: Eric Biggers <ebiggers@google.com>
2020-03-19 11:29:03 -07:00
Eric Biggers
827b96c172 FROMLIST: ext4: wire up FS_IOC_GET_ENCRYPTION_NONCE
This new ioctl retrieves a file's encryption nonce, which is useful for
testing.  See the corresponding fs/crypto/ patch for more details.

Bug: 151100202
Link: https://lore.kernel.org/r/20200314205052.93294-3-ebiggers@kernel.org
Change-Id: I85350aed66285b92444d37c8cd840fb03d2ca25d
Signed-off-by: Eric Biggers <ebiggers@google.com>
2020-03-19 11:29:03 -07:00
Eric Biggers
5e19d3fa33 FROMLIST: fscrypt: add FS_IOC_GET_ENCRYPTION_NONCE ioctl
Add an ioctl FS_IOC_GET_ENCRYPTION_NONCE which retrieves the nonce from
an encrypted file or directory.  The nonce is the 16-byte random value
stored in the inode's encryption xattr.  It is normally used together
with the master key to derive the inode's actual encryption key.

The nonces are needed by automated tests that verify the correctness of
the ciphertext on-disk.  Except for the IV_INO_LBLK_64 case, there's no
way to replicate a file's ciphertext without knowing that file's nonce.

The nonces aren't secret, and the existing ciphertext verification tests
in xfstests retrieve them from disk using debugfs or dump.f2fs.  But in
environments that lack these debugging tools, getting the nonces by
manually parsing the filesystem structure would be very hard.

To make this important type of testing much easier, let's just add an
ioctl that retrieves the nonce.

Bug: 151100202
Link: https://lore.kernel.org/r/20200314205052.93294-2-ebiggers@kernel.org
Change-Id: Ieef2c57b9257ae38eb2e5c1a018ca6f325bb62dd
Signed-off-by: Eric Biggers <ebiggers@google.com>
2020-03-19 11:29:02 -07:00
Greg Kroah-Hartman
1191305043 ANDROID: GKI: mm: add Android ABI padding to some structures
Try to mitigate potential future driver core api changes by adding a
padding to stuct vm_area_struct and struct zone.

Based on a patch from Michal Marek <mmarek@suse.cz> from the SLES kernel

Leaf changes summary: 3 artifacts changed
Changed leaf types summary: 3 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct vm_area_struct at mm_types.h:292:1' changed:
  type size changed from 1472 to 1728 (in bits)
  4 data member insertions:
    'u64 vm_area_struct::android_kabi_reserved1', at offset 1472 (in bits) at mm_types.h:365:1
    'u64 vm_area_struct::android_kabi_reserved2', at offset 1536 (in bits) at mm_types.h:366:1
    'u64 vm_area_struct::android_kabi_reserved3', at offset 1600 (in bits) at mm_types.h:367:1
    'u64 vm_area_struct::android_kabi_reserved4', at offset 1664 (in bits) at mm_types.h:368:1
  1435 impacted interfaces:

'struct zone at mmzone.h:420:1' changed:
  type size changed from 12800 to 13312 (in bits)
  4 data member insertions:
    'u64 zone::android_kabi_reserved1', at offset 12672 (in bits) at mmzone.h:569:1
    'u64 zone::android_kabi_reserved2', at offset 12736 (in bits) at mmzone.h:570:1
    'u64 zone::android_kabi_reserved3', at offset 12800 (in bits) at mmzone.h:571:1
    'u64 zone::android_kabi_reserved4', at offset 12864 (in bits) at mmzone.h:572:1
  624 impacted interfaces:

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I81702aa833f419928e0e32e9609722b98592c171
2020-03-19 15:01:25 +01:00
Greg Kroah-Hartman
2e1ae17be8 ANDROID: GKI: mount.h: add Android ABI padding to some structures
Try to mitigate potential future driver core api changes by adding a
padding to struct vfsmount.

Based on a patch from Michal Marek <mmarek@suse.cz> from the SLES kernel

Leaf changes summary: 1 artifact changed
Changed leaf types summary: 1 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct vfsmount at mount.h:68:1' changed:
  type size changed from 256 to 512 (in bits)
  4 data member insertions:
    'u64 vfsmount::android_kabi_reserved1', at offset 192 (in bits) at mount.h:73:1
    'u64 vfsmount::android_kabi_reserved2', at offset 256 (in bits) at mount.h:74:1
    'u64 vfsmount::android_kabi_reserved3', at offset 320 (in bits) at mount.h:75:1
    'u64 vfsmount::android_kabi_reserved4', at offset 384 (in bits) at mount.h:76:1
  there are data member changes:
    'void* vfsmount::data' offset changed from 192 to 448 (in bits) (by +256 bits)
  8 impacted interfaces:
    function vfsmount* mntget(vfsmount*)
    function int notify_change2(vfsmount*, dentry*, iattr*, inode**)
    function int vfs_create2(vfsmount*, inode*, dentry*, umode_t, bool)
    function int vfs_mkdir2(vfsmount*, inode*, dentry*, umode_t)
    function int vfs_path_lookup(dentry*, vfsmount*, const char*, unsigned int, path*)
    function int vfs_rename2(vfsmount*, inode*, dentry*, inode*, dentry*, inode**, unsigned int)
    function int vfs_rmdir2(vfsmount*, inode*, dentry*)
    function int vfs_unlink2(vfsmount*, inode*, dentry*, inode**)

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I9ce1b63f05c90af168eeea1312ac88d3cc5cfdf3
2020-03-19 14:31:21 +01:00
Greg Kroah-Hartman
b34f70f7bf ANDROID: GKI: sched.h: add Android ABI padding to some structures
Try to mitigate potential future driver core api changes by adding a
pointer to struct signal_struct, struct sched_entity, struct
sched_rt_entity, and struct task_struct.

Based on a patch from Michal Marek <mmarek@suse.cz> from the SLES kernel

Leaf changes summary: 3 artifacts changed
Changed leaf types summary: 3 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct sched_entity at sched.h:444:1' changed:
  type size changed from 3584 to 4096 (in bits)
  4 data member insertions:
    'u64 sched_entity::android_kabi_reserved1', at offset 3584 (in bits) at sched.h:481:1
    'u64 sched_entity::android_kabi_reserved2', at offset 3648 (in bits) at sched.h:482:1
    'u64 sched_entity::android_kabi_reserved3', at offset 3712 (in bits) at sched.h:483:1
    'u64 sched_entity::android_kabi_reserved4', at offset 3776 (in bits) at sched.h:484:1
  1435 impacted interfaces:

'struct sched_rt_entity at sched.h:481:1' changed:
  type size changed from 384 to 640 (in bits)
  4 data member insertions:
    'u64 sched_rt_entity::android_kabi_reserved1', at offset 384 (in bits) at sched.h:504:1
    'u64 sched_rt_entity::android_kabi_reserved2', at offset 448 (in bits) at sched.h:505:1
    'u64 sched_rt_entity::android_kabi_reserved3', at offset 512 (in bits) at sched.h:506:1
    'u64 sched_rt_entity::android_kabi_reserved4', at offset 576 (in bits) at sched.h:507:1
  1435 impacted interfaces:

'struct task_struct at sched.h:624:1' changed:
  type size changed from 28672 to 30208 (in bits)
  8 data member insertions:
    'u64 task_struct::android_kabi_reserved1', at offset 20992 (in bits) at sched.h:1294:1
    'u64 task_struct::android_kabi_reserved2', at offset 21056 (in bits) at sched.h:1295:1
    'u64 task_struct::android_kabi_reserved3', at offset 21120 (in bits) at sched.h:1296:1
    'u64 task_struct::android_kabi_reserved4', at offset 21184 (in bits) at sched.h:1297:1
    'u64 task_struct::android_kabi_reserved5', at offset 21248 (in bits) at sched.h:1298:1
    'u64 task_struct::android_kabi_reserved6', at offset 21312 (in bits) at sched.h:1299:1
    'u64 task_struct::android_kabi_reserved7', at offset 21376 (in bits) at sched.h:1300:1
    'u64 task_struct::android_kabi_reserved8', at offset 21440 (in bits) at sched.h:1301:1
  there are data member changes:
  1435 impacted interfaces:

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I1449735b836399e9b356608727092334daf5c36b
2020-03-19 13:50:19 +01:00
Greg Kroah-Hartman
e0b884a0f5 ANDROID: GKI: sock.h: add Android ABI padding to some structures
Try to mitigate potential future driver core api changes by adding a
padding to struct sock.

Based on a patch from Michal Marek <mmarek@suse.cz> from the SLES kernel

Leaf changes summary: 1 artifact changed
Changed leaf types summary: 1 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct sock at sock.h:324:1' changed:
  type size changed from 6016 to 6528 (in bits)
  8 data member insertions:
    'u64 sock::android_kabi_reserved1', at offset 6016 (in bits) at sock.h:516:1
    'u64 sock::android_kabi_reserved2', at offset 6080 (in bits) at sock.h:517:1
    'u64 sock::android_kabi_reserved3', at offset 6144 (in bits) at sock.h:518:1
    'u64 sock::android_kabi_reserved4', at offset 6208 (in bits) at sock.h:519:1
    'u64 sock::android_kabi_reserved5', at offset 6272 (in bits) at sock.h:520:1
    'u64 sock::android_kabi_reserved6', at offset 6336 (in bits) at sock.h:521:1
    'u64 sock::android_kabi_reserved7', at offset 6400 (in bits) at sock.h:522:1
    'u64 sock::android_kabi_reserved8', at offset 6464 (in bits) at sock.h:523:1

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I61c3d6cf12c087345db71fc6d93ee6bd58969003
2020-03-19 11:56:25 +01:00
Greg Kroah-Hartman
fe54c238b3 ANDROID: GKI: module.h: add Android ABI padding to some structures
Try to mitigate potential future driver core api changes by adding a
padding to struct module.

Based on a patch from Michal Marek <mmarek@suse.cz> from the SLES kernel

Leaf changes summary: 1 artifact changed
Changed leaf types summary: 1 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct module at module.h:348:1' changed:
  type size hasn't changed
  4 data member insertions:
    'u64 module::android_kabi_reserved1', at offset 6720 (in bits) at module.h:518:1
    'u64 module::android_kabi_reserved2', at offset 6784 (in bits) at module.h:519:1
    'u64 module::android_kabi_reserved3', at offset 6848 (in bits) at module.h:520:1
    'u64 module::android_kabi_reserved4', at offset 6912 (in bits) at module.h:521:1

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I2a764e9eac88f20e50d192112235da6d2f0f83bc
2020-03-19 10:25:23 +00:00
Saravana Kannan
a27d26af7d UPSTREAM: driver core: Skip unnecessary work when device doesn't have sync_state()
A bunch of busy work is done for devices that don't have sync_state()
support. Stop doing the busy work.

Signed-off-by: Saravana Kannan <saravanak@google.com>
Link: https://lore.kernel.org/r/20200221080510.197337-4-saravanak@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 77036165d8bcf7c7b2a2df28a601ec2c52bb172d)
Bug: 151865289
Change-Id: Id513185be93c036150ffd7156104f898fec70c11
2020-03-18 19:33:58 -07:00
Paul Lawrence
401eeccd43 ANDROID: Incremental fs: Add INCFS_IOC_PERMIT_FILL
Provide a securable way to open a file for filling

Test: incfs_test passes
Bug: 138149732
Signed-off-by: Paul Lawrence <paullawrence@google.com>
Change-Id: Ib4b6fd839ad30ce08e31121d19e2c0d7066d302f
2020-03-18 16:43:36 +00:00
Paul Lawrence
8630e95541 ANDROID: Incremental fs: Remove signature checks from kernel
Test: selftests pass
Bug: 133435829
Signed-off-by: Paul Lawrence <paullawrence@google.com>
Change-Id: Ia7e69b1b0176202da4b418ea815b370cbdacd5c2
2020-03-18 16:43:20 +00:00
Paul Lawrence
e761a2002f ANDROID: Incremental fs: Pad hash blocks
Test: incfs_test passes
Bug: 133435829
Signed-off-by: Paul Lawrence <paullawrence@google.com>
Change-Id: I4e6fbd0938f00e7e6883ce1a26cbfd38fdcaa9a5
2020-03-18 16:43:03 +00:00
Paul Lawrence
c9c4db5da6 ANDROID: Incremental fs: Make fill block an ioctl
Filling blocks is not equivalent to writing a file, since they are
constrained by the root hash. selinux policy may wish to treat them
differently, for instance.

Test: incfs_test passes
Bug: 138149732
Signed-off-by: Paul Lawrence <paullawrence@google.com>
Change-Id: Ic369b84b92547b1cfefe422bd881c4e466090aed
2020-03-18 16:42:44 +00:00
Paul Lawrence
8dfd3a1e24 ANDROID: Incremental fs: Remove all access_ok checks
They provide no value and simply duplicate a check in copy_from/to_user

Test: incfs_test passes
Bug: 138149732
Signed-off-by: Paul Lawrence <paullawrence@google.com>
Change-Id: Icc6054a2d6a495c9a03cd1507dda1ab8ca0b0dc4
2020-03-18 16:42:27 +00:00
Greg Kroah-Hartman
0d094683fc ANDROID: GKI: device.h: add Android ABI padding to some structures
Try to mitigate potential future driver core api changes by padding to
struct bus_type, struct device_driver, struct class, and struct device.

Based on a patch from Michal Marek <mmarek@suse.cz> from the SLES kernel

Leaf changes summary: 70 artifacts changed
Changed leaf types summary: 70 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

[majority snipped, as there are a lot of child-structure changes, here
 are the real things changed]

'struct bus_type at device.h:122:1' changed:
  type size changed from 1408 to 1664 (in bits)
  4 data member insertions:
    'u64 bus_type::android_kabi_reserved1', at offset 1408 (in bits) at device.h:157:1
    'u64 bus_type::android_kabi_reserved2', at offset 1472 (in bits) at device.h:158:1
    'u64 bus_type::android_kabi_reserved3', at offset 1536 (in bits) at device.h:159:1
    'u64 bus_type::android_kabi_reserved4', at offset 1600 (in bits) at device.h:160:1

  1410 impacted interfaces:

'struct class at device.h:589:1' changed:
  type size changed from 960 to 1216 (in bits)
  4 data member insertions:
    'u64 class::android_kabi_reserved1', at offset 960 (in bits) at device.h:625:1
    'u64 class::android_kabi_reserved2', at offset 1024 (in bits) at device.h:626:1
    'u64 class::android_kabi_reserved3', at offset 1088 (in bits) at device.h:627:1
    'u64 class::android_kabi_reserved4', at offset 1152 (in bits) at device.h:628:1

  1410 impacted interfaces:

'struct device at device.h:1257:1' changed:
  type size changed from 6144 to 6656 (in bits)
  8 data member insertions:
    'u64 device::android_kabi_reserved1', at offset 6144 (in bits) at device.h:1364:1
    'u64 device::android_kabi_reserved2', at offset 6208 (in bits) at device.h:1365:1
    'u64 device::android_kabi_reserved3', at offset 6272 (in bits) at device.h:1366:1
    'u64 device::android_kabi_reserved4', at offset 6336 (in bits) at device.h:1367:1
    'u64 device::android_kabi_reserved5', at offset 6400 (in bits) at device.h:1368:1
    'u64 device::android_kabi_reserved6', at offset 6464 (in bits) at device.h:1369:1
    'u64 device::android_kabi_reserved7', at offset 6528 (in bits) at device.h:1370:1
    'u64 device::android_kabi_reserved8', at offset 6592 (in bits) at device.h:1371:1

  1410 impacted interfaces:

'struct device_driver at device.h:383:1' changed:
  type size changed from 1152 to 1408 (in bits)
  4 data member insertions:
    'u64 device_driver::android_kabi_reserved1', at offset 1152 (in bits) at device.h:416:1
    'u64 device_driver::android_kabi_reserved2', at offset 1216 (in bits) at device.h:417:1
    'u64 device_driver::android_kabi_reserved3', at offset 1280 (in bits) at device.h:418:1
    'u64 device_driver::android_kabi_reserved4', at offset 1344 (in bits) at device.h:419:1

  1410 impacted interfaces:

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I6892cde6481ba775789f0c02239dcfde3a26b56e
2020-03-18 13:55:57 +01:00
Greg Kroah-Hartman
26553937fc ANDROID: GKI: phy: add Android ABI padding to some structures
Try to mitigate potential future driver core api changes by adding a
padding to stuct phy_device and struct phy_driver

Inspired by the upstream changes in 5.4.26 and 4.19.111

This includes the ABI update for the change as well:

Leaf changes summary: 2 artifacts changed
Changed leaf types summary: 2 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct phy_device at phy.h:360:1' changed:
  type size changed from 9472 to 9728 (in bits)
  4 data member insertions:
    'u64 phy_device::android_kabi_reserved1', at offset 9472 (in bits) at phy.h:447:1
    'u64 phy_device::android_kabi_reserved2', at offset 9536 (in bits) at phy.h:448:1
    'u64 phy_device::android_kabi_reserved3', at offset 9600 (in bits) at phy.h:449:1
    'u64 phy_device::android_kabi_reserved4', at offset 9664 (in bits) at phy.h:450:1

  7 impacted interfaces:
    function int genphy_resume(phy_device*)
    function phy_device* phy_connect(net_device*, const char*, void ()*, phy_interface_t)
    function void phy_disconnect(phy_device*)
    function int phy_mii_ioctl(phy_device*, ifreq*, int)
    function void phy_print_status(phy_device*)
    function void phy_start(phy_device*)
    function void phy_stop(phy_device*)

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I8dbc5f76e9eddfc5741f944168222aedacd0a8bb
2020-03-18 10:51:31 +01:00
Greg Kroah-Hartman
5b0d8a717e ANDROID: ABI update for 5.4.26
Leaf changes summary: 1 artifact changed
Changed leaf types summary: 1 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct phy_device at phy.h:359:1' changed:
  type size hasn't changed
  1 data member insertion:
    'unsigned int phy_device::suspended_by_mdio_bus', at offset 25 (in bits) at phy.h:376:1
  there are data member changes:
   'unsigned int phy_device::interrupts' offset changed from 20 to 19 (in bits) (by -1 bits)
   'unsigned int phy_device::autoneg_complete' offset changed from 21 to 20 (in bits) (by -1 bits)
   'unsigned int phy_device::link' offset changed from 22 to 21 (in bits) (by -1 bits)
   'unsigned int phy_device::autoneg' offset changed from 23 to 22 (in bits) (by -1 bits)
   'unsigned int phy_device::loopback_enabled' offset changed from 24 to 23 (in bits) (by -1 bits)
   'unsigned int phy_device::sysfs_links' offset changed from 25 to 24 (in bits) (by -1 bits)

  7 impacted interfaces:
    function int genphy_resume(phy_device*)
    function phy_device* phy_connect(net_device*, const char*, void ()*, phy_interface_t)
    function void phy_disconnect(phy_device*)
    function int phy_mii_ioctl(phy_device*, ifreq*, int)
    function void phy_print_status(phy_device*)
    function void phy_start(phy_device*)
    function void phy_stop(phy_device*)

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I09c1c2031d87178b4c0eb0adffe8bdaecfb6c45a
2020-03-18 08:37:23 +01:00
Greg Kroah-Hartman
0d3cca0c7d This is the 5.4.26 stable release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAl5xvRcACgkQONu9yGCS
 aT5GJhAAlahoiTrrDWQH5njl2uNVxOqZl2r6jiaX7+CrcPUg5tIznqUo9qht2s+V
 zCqUcuq9e1Q6WFeqHPx0qwaROaLppcKLuTqg4hrH2KPhuZ4yYjTfjFa8++Q7poPL
 7tQVYxC6r04IdoZnbAOrRduAoMFMgTq9WZCdOpY3860LJrelOPPUh6+N8YnzXTIs
 q0+6nBNtlMYAlQLbQI9nggOtxf6yBor4Y9mfgk1Spe8vbNyZBFCvtRTntlhJI5ME
 u+xictLY3dbvUNFeuJSlQZd22tqTvw2Gxc5Efy2GHjokNb7SKMEswnWy1K6BKP5b
 NZwLtn85mgCWbq7Eo4Bf5idA2EpsyeoJTr9bRmx5mWJ3hFcUaMj6bNEUrfybsZKg
 8/lbP5zM459NyLF+arCy5lNkNBridQt/vDciGiYDzHEVi88PJRNwL6nN01XK+ByU
 aCcQghNAzjMYdxDwotWGKKyTelC+Ck8FlJkIoIgEPYvvTRdaDk+BP/mHaH7KQNax
 AXbSND0MmtloxHgecvmJASU/628uhv8hxzjcCW+Gnzwk55nH2rwZ+VC4ciJgI/hj
 u5x1zaumj67WPqAZ7dZIBrJxpKfDMMFxTQFXLMgP+C+UjJviG4dUw1IVk0v5jTqx
 XG+Gk13ovv62QtKW7wTsuZVrjHXo1zB8OsQrDdKG+GXTkf53bP4=
 =1Qwi
 -----END PGP SIGNATURE-----

Merge 5.4.26 into android-5.4

Changes in 5.4.26
	virtio_balloon: Adjust label in virtballoon_probe
	ALSA: hda/realtek - More constifications
	ALSA: hda/realtek - Add Headset Mic supported for HP cPC
	ALSA: hda/realtek - Fixed one of HP ALC671 platform Headset Mic supported
	cgroup, netclassid: periodically release file_lock on classid updating
	gre: fix uninit-value in __iptunnel_pull_header
	inet_diag: return classid for all socket types
	ipv6/addrconf: call ipv6_mc_up() for non-Ethernet interface
	ipvlan: add cond_resched_rcu() while processing muticast backlog
	ipvlan: do not add hardware address of master to its unicast filter list
	ipvlan: do not use cond_resched_rcu() in ipvlan_process_multicast()
	ipvlan: don't deref eth hdr before checking it's set
	macvlan: add cond_resched() during multicast processing
	net: dsa: fix phylink_start()/phylink_stop() calls
	net: dsa: mv88e6xxx: fix lockup on warm boot
	net: fec: validate the new settings in fec_enet_set_coalesce()
	net: hns3: fix a not link up issue when fibre port supports autoneg
	net/ipv6: use configured metric when add peer route
	netlink: Use netlink header as base to calculate bad attribute offset
	net: macsec: update SCI upon MAC address change.
	net: nfc: fix bounds checking bugs on "pipe"
	net/packet: tpacket_rcv: do not increment ring index on drop
	net: phy: bcm63xx: fix OOPS due to missing driver name
	net: stmmac: dwmac1000: Disable ACS if enhanced descs are not used
	net: systemport: fix index check to avoid an array out of bounds access
	r8152: check disconnect status after long sleep
	sfc: detach from cb_page in efx_copy_channel()
	slip: make slhc_compress() more robust against malicious packets
	taprio: Fix sending packets without dequeueing them
	bonding/alb: make sure arp header is pulled before accessing it
	bnxt_en: reinitialize IRQs when MTU is modified
	bnxt_en: fix error handling when flashing from file
	cgroup: memcg: net: do not associate sock with unrelated cgroup
	net: memcg: late association of sock to memcg
	net: memcg: fix lockdep splat in inet_csk_accept()
	devlink: validate length of param values
	devlink: validate length of region addr/len
	fib: add missing attribute validation for tun_id
	nl802154: add missing attribute validation
	nl802154: add missing attribute validation for dev_type
	can: add missing attribute validation for termination
	macsec: add missing attribute validation for port
	net: fq: add missing attribute validation for orphan mask
	net: taprio: add missing attribute validation for txtime delay
	team: add missing attribute validation for port ifindex
	team: add missing attribute validation for array index
	tipc: add missing attribute validation for MTU property
	nfc: add missing attribute validation for SE API
	nfc: add missing attribute validation for deactivate target
	nfc: add missing attribute validation for vendor subcommand
	net: phy: avoid clearing PHY interrupts twice in irq handler
	net: phy: fix MDIO bus PM PHY resuming
	net/ipv6: need update peer route when modify metric
	net/ipv6: remove the old peer route if change it to a new one
	selftests/net/fib_tests: update addr_metric_test for peer route testing
	net: dsa: Don't instantiate phylink for CPU/DSA ports unless needed
	net: phy: Avoid multiple suspends
	cgroup: cgroup_procs_next should increase position index
	cgroup: Iterate tasks that did not finish do_exit()
	netfilter: nf_tables: fix infinite loop when expr is not available
	iwlwifi: mvm: Do not require PHY_SKU NVM section for 3168 devices
	virtio-blk: fix hw_queue stopped on arbitrary error
	iommu/vt-d: quirk_ioat_snb_local_iommu: replace WARN_TAINT with pr_warn + add_taint
	netfilter: nf_conntrack: ct_cpu_seq_next should increase position index
	netfilter: synproxy: synproxy_cpu_seq_next should increase position index
	netfilter: xt_recent: recent_seq_next should increase position index
	netfilter: x_tables: xt_mttg_seq_next should increase position index
	workqueue: don't use wq_select_unbound_cpu() for bound works
	drm/amd/display: remove duplicated assignment to grph_obj_type
	drm/i915: be more solid in checking the alignment
	drm/i915: Defer semaphore priority bumping to a workqueue
	mmc: sdhci-pci-gli: Enable MSI interrupt for GL975x
	pinctrl: falcon: fix syntax error
	ktest: Add timeout for ssh sync testing
	cifs_atomic_open(): fix double-put on late allocation failure
	gfs2_atomic_open(): fix O_EXCL|O_CREAT handling on cold dcache
	KVM: x86: clear stale x86_emulate_ctxt->intercept value
	KVM: nVMX: avoid NULL pointer dereference with incorrect EVMCS GPAs
	ARC: define __ALIGN_STR and __ALIGN symbols for ARC
	fuse: fix stack use after return
	s390/dasd: fix data corruption for thin provisioned devices
	ipmi_si: Avoid spurious errors for optional IRQs
	blk-iocost: fix incorrect vtime comparison in iocg_is_idle()
	fscrypt: don't evict dirty inodes after removing key
	macintosh: windfarm: fix MODINFO regression
	x86/ioremap: Map EFI runtime services data as encrypted for SEV
	efi: Fix a race and a buffer overflow while reading efivars via sysfs
	efi: Add a sanity check to efivar_store_raw()
	i2c: designware-pci: Fix BUG_ON during device removal
	mt76: fix array overflow on receiving too many fragments for a packet
	perf/amd/uncore: Replace manual sampling check with CAP_NO_INTERRUPT flag
	x86/mce: Fix logic and comments around MSR_PPIN_CTL
	iommu/dma: Fix MSI reservation allocation
	iommu/vt-d: dmar: replace WARN_TAINT with pr_warn + add_taint
	iommu/vt-d: Fix RCU list debugging warnings
	iommu/vt-d: Fix a bug in intel_iommu_iova_to_phys() for huge page
	batman-adv: Don't schedule OGM for disabled interface
	clk: imx8mn: Fix incorrect clock defines
	pinctrl: meson-gxl: fix GPIOX sdio pins
	pinctrl: imx: scu: Align imx sc msg structs to 4
	virtio_ring: Fix mem leak with vring_new_virtqueue()
	drm/i915/gvt: Fix dma-buf display blur issue on CFL
	pinctrl: core: Remove extra kref_get which blocks hogs being freed
	drm/i915/gvt: Fix unnecessary schedule timer when no vGPU exits
	driver code: clarify and fix platform device DMA mask allocation
	iommu/vt-d: Fix RCU-list bugs in intel_iommu_init()
	i2c: gpio: suppress error on probe defer
	nl80211: add missing attribute validation for critical protocol indication
	nl80211: add missing attribute validation for beacon report scanning
	nl80211: add missing attribute validation for channel switch
	perf bench futex-wake: Restore thread count default to online CPU count
	netfilter: cthelper: add missing attribute validation for cthelper
	netfilter: nft_payload: add missing attribute validation for payload csum flags
	netfilter: nft_tunnel: add missing attribute validation for tunnels
	netfilter: nf_tables: dump NFTA_CHAIN_FLAGS attribute
	netfilter: nft_chain_nat: inet family is missing module ownership
	iommu/vt-d: Fix the wrong printing in RHSA parsing
	iommu/vt-d: Ignore devices with out-of-spec domain number
	i2c: acpi: put device when verifying client fails
	iommu/amd: Fix IOMMU AVIC not properly update the is_run bit in IRTE
	ipv6: restrict IPV6_ADDRFORM operation
	net/smc: check for valid ib_client_data
	net/smc: cancel event worker during device removal
	Linux 5.4.26

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ifacde9164f8ded01031a9e6a9c313d4fbcead25b
2020-03-18 08:19:15 +01:00
Greg Kroah-Hartman
257edc6db9 Linux 5.4.26 2020-03-18 07:17:59 +01:00
Karsten Graul
881f9469cc net/smc: cancel event worker during device removal
commit ece0d7bd74615773268475b6b64d6f1ebbd4b4c6 upstream.

During IB device removal, cancel the event worker before the device
structure is freed.

Fixes: a4cf0443c4 ("smc: introduce SMC as an IB-client")
Reported-by: syzbot+b297c6825752e7a07272@syzkaller.appspotmail.com
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Reviewed-by: Ursula Braun <ubraun@linux.ibm.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-03-18 07:17:59 +01:00
Karsten Graul
dbaba2a4db net/smc: check for valid ib_client_data
commit a2f2ef4a54c0d97aa6a8386f4ff23f36ebb488cf upstream.

In smc_ib_remove_dev() check if the provided ib device was actually
initialized for SMC before.

Reported-by: syzbot+84484ccebdd4e5451d91@syzkaller.appspotmail.com
Fixes: a4cf0443c4 ("smc: introduce SMC as an IB-client")
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-03-18 07:17:59 +01:00
Eric Dumazet
aa38bea47f ipv6: restrict IPV6_ADDRFORM operation
commit b6f6118901d1e867ac9177bbff3b00b185bd4fdc upstream.

IPV6_ADDRFORM is able to transform IPv6 socket to IPv4 one.
While this operation sounds illogical, we have to support it.

One of the things it does for TCP socket is to switch sk->sk_prot
to tcp_prot.

We now have other layers playing with sk->sk_prot, so we should make
sure to not interfere with them.

This patch makes sure sk_prot is the default pointer for TCP IPv6 socket.

syzbot reported :
BUG: kernel NULL pointer dereference, address: 0000000000000000
PGD a0113067 P4D a0113067 PUD a8771067 PMD 0
Oops: 0010 [#1] PREEMPT SMP KASAN
CPU: 0 PID: 10686 Comm: syz-executor.0 Not tainted 5.6.0-rc2-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
RIP: 0010:0x0
Code: Bad RIP value.
RSP: 0018:ffffc9000281fce0 EFLAGS: 00010246
RAX: 1ffffffff15f48ac RBX: ffffffff8afa4560 RCX: dffffc0000000000
RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8880a69a8f40
RBP: ffffc9000281fd10 R08: ffffffff86ed9b0c R09: ffffed1014d351f5
R10: ffffed1014d351f5 R11: 0000000000000000 R12: ffff8880920d3098
R13: 1ffff1101241a613 R14: ffff8880a69a8f40 R15: 0000000000000000
FS:  00007f2ae75db700(0000) GS:ffff8880aea00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffffffffffffd6 CR3: 00000000a3b85000 CR4: 00000000001406f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 inet_release+0x165/0x1c0 net/ipv4/af_inet.c:427
 __sock_release net/socket.c:605 [inline]
 sock_close+0xe1/0x260 net/socket.c:1283
 __fput+0x2e4/0x740 fs/file_table.c:280
 ____fput+0x15/0x20 fs/file_table.c:313
 task_work_run+0x176/0x1b0 kernel/task_work.c:113
 tracehook_notify_resume include/linux/tracehook.h:188 [inline]
 exit_to_usermode_loop arch/x86/entry/common.c:164 [inline]
 prepare_exit_to_usermode+0x480/0x5b0 arch/x86/entry/common.c:195
 syscall_return_slowpath+0x113/0x4a0 arch/x86/entry/common.c:278
 do_syscall_64+0x11f/0x1c0 arch/x86/entry/common.c:304
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x45c429
Code: ad b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 7b b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007f2ae75dac78 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
RAX: 0000000000000000 RBX: 00007f2ae75db6d4 RCX: 000000000045c429
RDX: 0000000000000001 RSI: 000000000000011a RDI: 0000000000000004
RBP: 000000000076bf20 R08: 0000000000000038 R09: 0000000000000000
R10: 0000000020000180 R11: 0000000000000246 R12: 00000000ffffffff
R13: 0000000000000a9d R14: 00000000004ccfb4 R15: 000000000076bf2c
Modules linked in:
CR2: 0000000000000000
---[ end trace 82567b5207e87bae ]---
RIP: 0010:0x0
Code: Bad RIP value.
RSP: 0018:ffffc9000281fce0 EFLAGS: 00010246
RAX: 1ffffffff15f48ac RBX: ffffffff8afa4560 RCX: dffffc0000000000
RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8880a69a8f40
RBP: ffffc9000281fd10 R08: ffffffff86ed9b0c R09: ffffed1014d351f5
R10: ffffed1014d351f5 R11: 0000000000000000 R12: ffff8880920d3098
R13: 1ffff1101241a613 R14: ffff8880a69a8f40 R15: 0000000000000000
FS:  00007f2ae75db700(0000) GS:ffff8880aea00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffffffffffffd6 CR3: 00000000a3b85000 CR4: 00000000001406f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400

Fixes: 604326b41a ("bpf, sockmap: convert to generic sk_msg interface")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot+1938db17e275e85dc328@syzkaller.appspotmail.com
Cc: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-03-18 07:17:59 +01:00
Suravee Suthikulpanit
62fd4e348d iommu/amd: Fix IOMMU AVIC not properly update the is_run bit in IRTE
commit 730ad0ede130015a773229573559e97ba0943065 upstream.

Commit b9c6ff94e4 ("iommu/amd: Re-factor guest virtual APIC
(de-)activation code") accidentally left out the ir_data pointer when
calling modity_irte_ga(), which causes the function amd_iommu_update_ga()
to return prematurely due to struct amd_ir_data.ref is NULL and
the "is_run" bit of IRTE does not get updated properly.

This results in bad I/O performance since IOMMU AVIC always generate GA Log
entry and notify IOMMU driver and KVM when it receives interrupt from the
PCI pass-through device instead of directly inject interrupt to the vCPU.

Fixes by passing ir_data when calling modify_irte_ga() as done previously.

Fixes: b9c6ff94e4 ("iommu/amd: Re-factor guest virtual APIC (de-)activation code")
Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-03-18 07:17:58 +01:00
Wolfram Sang
8753b0cad1 i2c: acpi: put device when verifying client fails
commit 8daee952b4389729358665fb91949460641659d4 upstream.

i2c_verify_client() can fail, so we need to put the device when that
happens.

Fixes: 525e6fabea ("i2c / ACPI: add support for ACPI reconfigure notifications")
Reported-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-03-18 07:17:58 +01:00
Daniel Drake
03d524d70e iommu/vt-d: Ignore devices with out-of-spec domain number
commit da72a379b2ec0bad3eb265787f7008bead0b040c upstream.

VMD subdevices are created with a PCI domain ID of 0x10000 or
higher.

These subdevices are also handled like all other PCI devices by
dmar_pci_bus_notifier().

However, when dmar_alloc_pci_notify_info() take records of such devices,
it will truncate the domain ID to a u16 value (in info->seg).
The device at (e.g.) 10000:00:02.0 is then treated by the DMAR code as if
it is 0000:00:02.0.

In the unlucky event that a real device also exists at 0000:00:02.0 and
also has a device-specific entry in the DMAR table,
dmar_insert_dev_scope() will crash on:
   BUG_ON(i >= devices_cnt);

That's basically a sanity check that only one PCI device matches a
single DMAR entry; in this case we seem to have two matching devices.

Fix this by ignoring devices that have a domain number higher than
what can be looked up in the DMAR table.

This problem was carefully diagnosed by Jian-Hong Pan.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Daniel Drake <drake@endlessm.com>
Fixes: 59ce0515cd ("iommu/vt-d: Update DRHD/RMRR/ATSR device scope caches when PCI hotplug happens")
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-03-18 07:17:58 +01:00
Zhenzhong Duan
9493a6361d iommu/vt-d: Fix the wrong printing in RHSA parsing
commit b0bb0c22c4db623f2e7b1a471596fbf1c22c6dc5 upstream.

When base address in RHSA structure doesn't match base address in
each DRHD structure, the base address in last DRHD is printed out.

This doesn't make sense when there are multiple DRHD units, fix it
by printing the buggy RHSA's base address.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@gmail.com>
Fixes: fd0c889489 ("intel-iommu: Set a more specific taint flag for invalid BIOS DMAR tables")
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-03-18 07:17:58 +01:00