Commit graph

881,959 commits

Author SHA1 Message Date
Greg Kroah-Hartman
bd3a005d60 ANDROID: GKI: update abi symbol lists now that CONFIG_DWC3 is enabled.
This updates the abi symbol lists because they are no longer needed to
be exported.

Bug: 157965270
Change-Id: Ib31e228589f5a294ee89c37972fdba591940dd58
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-07-21 19:54:14 +02:00
Greg Kroah-Hartman
91632070d0 ANDROID: GKI: Enable CONFIG_USB_DWC3
Many platforms are using this so just build it in to make it simpler for
testing and for a smaller exported API.

Bug: 157965270
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ia5c92e22f61066411abfa766f3ce109fa86a915b
2020-07-21 18:40:50 +02:00
Liangcai Fan
d5cd6a7373 ANDROID: ABI: add the symbols of dwc3.ko and sprd-dma.ko to unisoc
Add the symbols of dwc3.ko and sprd-dma.ko to unisoc,and
updates the ABI representation accordingly.

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

7 Added functions:

  [A] 'function usb_role_switch* usb_role_switch_register(device*, const usb_role_switch_desc*)'
  [A] 'function void usb_role_switch_unregister(usb_role_switch*)'
  [A] 'function void vchan_dma_desc_free_list(virt_dma_chan*, list_head*)'
  [A] 'function virt_dma_desc* vchan_find_desc(virt_dma_chan*, dma_cookie_t)'
  [A] 'function void vchan_init(virt_dma_chan*, dma_device*)'
  [A] 'function int vchan_tx_desc_free(dma_async_tx_descriptor*)'
  [A] 'function dma_cookie_t vchan_tx_submit(dma_async_tx_descriptor*)'

Bug: 160255258
Change-Id: Ibe0bf761812a980fbec5df1365a8f8cdb201852e
Signed-off-by: Liangcai Fan <liangcai.fan@unisoc.com>
2020-07-21 18:12:22 +08:00
Murali Nalajala
0dc34f8619 ANDROID: ABI: Update the ABI whitelist for QCOM
Leaf changes summary: 60 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 59 Added functions
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable
Function symbols changes summary: 0 Removed, 1 Added function symbol not referenced by debug info
Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info

59 Added functions:

  [A] 'function int __register_rpmsg_driver(rpmsg_driver*, module*)'
  [A] 'function int __xa_alloc(xarray*, u32*, void*, xa_limit, gfp_t)'
  [A] 'function unsigned int blk_mq_rq_cpu(request*)'
  [A] 'function int cfg80211_external_auth_request(net_device*, cfg80211_external_auth_params*, gfp_t)'
  [A] 'function void cfg80211_update_owe_info_event(net_device*, cfg80211_update_owe_info*, gfp_t)'
  [A] 'function void dev_pm_opp_remove_all_dynamic(device*)'
  [A] 'function int devm_device_add_group(device*, const attribute_group*)'
  [A] 'function void devm_device_remove_group(device*, const attribute_group*)'
  [A] 'function int drm_dp_check_act_status(drm_dp_mst_topology_mgr*)'
  [A] 'function void drm_dp_mst_get_port_malloc(drm_dp_mst_port*)'
  [A] 'function void drm_dp_mst_put_port_malloc(drm_dp_mst_port*)'
  [A] 'function void gether_cleanup(eth_dev*)'
  [A] 'function net_device* gether_connect(gether*)'
  [A] 'function void gether_disconnect(gether*)'
  [A] 'function int gether_get_dev_addr(net_device*, char*, int)'
  [A] 'function int gether_get_host_addr(net_device*, char*, int)'
  [A] 'function int gether_get_host_addr_cdc(net_device*, char*, int)'
  [A] 'function int gether_get_ifname(net_device*, char*, int)'
  [A] 'function unsigned int gether_get_qmult(net_device*)'
  [A] 'function int gether_register_netdev(net_device*)'
  [A] 'function int gether_set_dev_addr(net_device*, const char*)'
  [A] 'function void gether_set_gadget(net_device*, usb_gadget*)'
  [A] 'function int gether_set_host_addr(net_device*, const char*)'
  [A] 'function void gether_set_qmult(net_device*, unsigned int)'
  [A] 'function net_device* gether_setup_name_default(const char*)'
  [A] 'function int iommu_dma_enable_best_fit_algo(device*)'
  [A] 'function int iterate_fd(files_struct*, unsigned int, int (void*, file*, unsigned int)*, void*)'
  [A] 'function int kernel_bind(socket*, sockaddr*, int)'
  [A] 'function void led_blink_set(led_classdev*, unsigned long int*, unsigned long int*)'
  [A] 'function llist_node* llist_reverse_order(llist_node*)'
  [A] 'function ssize_t memory_read_from_buffer(void*, size_t, loff_t*, void*, size_t)'
  [A] 'function void netif_receive_skb_list(list_head*)'
  [A] 'function thermal_cooling_device* of_cpufreq_cooling_register(cpufreq_policy*)'
  [A] 'function int of_property_read_u64_index(const device_node*, const char*, u32, u64*)'
  [A] 'function void proc_set_user(proc_dir_entry*, __anonymous_struct__, __anonymous_struct__1)'
  [A] 'function int register_oom_notifier(notifier_block*)'
  [A] 'function void rndis_deregister(rndis_params*)'
  [A] 'function void rndis_free_response(rndis_params*, unsigned char*)'
  [A] 'function unsigned char* rndis_get_next_response(rndis_params*, unsigned int*)'
  [A] 'function int rndis_msg_parser(rndis_params*, unsigned char*)'
  [A] 'function rndis_params* rndis_register(void (void*)*, void*)'
  [A] 'function void rndis_set_host_mac(rndis_params*, const u8*)'
  [A] 'function int rndis_set_param_dev(rndis_params*, net_device*, unsigned short int*)'
  [A] 'function int rndis_set_param_medium(rndis_params*, unsigned int, unsigned int)'
  [A] 'function int rndis_set_param_vendor(rndis_params*, unsigned int, const char*)'
  [A] 'function int rndis_signal_connect(rndis_params*)'
  [A] 'function void rndis_uninit(rndis_params*)'
  [A] 'function void sdhci_cqe_disable(mmc_host*, bool)'
  [A] 'function void sdhci_cqe_enable(mmc_host*)'
  [A] 'function bool sdhci_cqe_irq(sdhci_host*, u32, int*, int*)'
  [A] 'function void sdhci_dumpregs(sdhci_host*)'
  [A] 'function sk_buff* skb_dequeue_tail(sk_buff_head*)'
  [A] 'function int unregister_oom_notifier(notifier_block*)'
  [A] 'function void unregister_rpmsg_driver(rpmsg_driver*)'
  [A] 'function void* xa_erase(xarray*, unsigned long int)'
  [A] 'function void* xa_find(xarray*, unsigned long int*, unsigned long int, unsigned int)'
  [A] 'function void* xa_find_after(xarray*, unsigned long int*, unsigned long int, unsigned int)'
  [A] 'function void* xa_load(xarray*, unsigned long int)'
  [A] 'function void* xa_store(xarray*, unsigned long int, void*, gfp_t)'

1 Added variable:

  [A] 'kobject* hypervisor_kobj'

1 Added function symbol not referenced by debug info:

  [A] strrchr

Bug: 160716463
Signed-off-by: Murali Nalajala <mnalajal@codeaurora.org>
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I2f384b730a82e32b6502ea3dc1ff6565e4147448
2020-07-21 01:08:30 +00:00
Alistair Delva
a3aef125ca ANDROID: GKI: Update CF abi list for virtio-console
This was already enabled on goldfish so no ABI update is necessary.

Bug: 160341724
Change-Id: I04b5a170606f7230a19c3631c06759c871dd7efa
Signed-off-by: Alistair Delva <adelva@google.com>
2020-07-20 15:24:46 +00:00
Kees Cook
a08f329bfb UPSTREAM: lkdtm/heap: Avoid edge and middle of slabs
Har har, after I moved the slab freelist pointer into the middle of the
slab, now it looks like the contents are getting poisoned. Adjust the
test to avoid the freelist pointer again.

Fixes: 3202fa62fb43 ("slub: relocate freelist pointer to middle of object")
Cc: stable@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20200625203704.317097-3-keescook@chromium.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
bug: 156889933
(cherry picked from commit e12145cf1c3a8077e6d9f575711e38dd7d8a3ebc)

Change-Id: Iad65d562dcd0efbda569ae47f015ec8d1ccaef41
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
2020-07-17 15:04:34 -07:00
Kees Cook
c1b8f43dc3 UPSTREAM: lkdtm: Avoid more compiler optimizations for bad writes
It seems at least Clang is able to throw away writes it knows are
destined for read-only memory, which makes things like the WRITE_RO test
fail, as the write gets elided. Instead, force the variable to be
volatile, and make similar changes through-out other tests in an effort
to avoid needing to repeat fixing these kinds of problems. Also includes
pr_err() calls in failure paths so that kernel logs are more clear in
the failure case.

Reported-by: Prasad Sodagudi <psodagud@codeaurora.org>
Suggested-by: Sami Tolvanen <samitolvanen@google.com>
Fixes: 9ae113ce5f ("lkdtm: add tests for additional page permissions")
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20200625203704.317097-2-keescook@chromium.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
bug: 156889933
(cherry picked from commit 464e86b4abadfc490f426954b431e2ec6a9d7bd2)
[Resolved minor conflicts in drivers/misc/lkdtm/bugs.c for lkdtm_ARRAY_BOUNDS]

Change-Id: I084d34c7fc7685a3b980a8ac5d839d68684cae86
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
2020-07-17 15:03:18 -07:00
Todd Kjos
5d4656c4d4 ANDROID: GKI: Update ABI after RPMH config change
Leaf changes summary: 5 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 5 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

5 Removed functions:

  [D] 'function int rpmh_flush(const device*)'
  [D] 'function int rpmh_invalidate(const device*)'
  [D] 'function int rpmh_write(const device*, rpmh_state, const tcs_cmd*, unsigned int)'
  [D] 'function int rpmh_write_async(const device*, rpmh_state, const tcs_cmd*, unsigned int)'
  [D] 'function int rpmh_write_batch(const device*, rpmh_state, const tcs_cmd*, u32*)'

Bug: 161478631
Bug: 161128971
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Ie4b1310b23801e32b628547077d659a0600a32ec
2020-07-17 10:26:43 -07:00
Todd Kjos
01de93cce1 ANDROID: GKI: Adjust symbol lists after RPMH removed from gki_defconfig
Since QCOM_RPMh is no longer built-in, remove it's symbols from
the symbol lists

Bug: 161478631
Bug: 161128971
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I8f8179148e75a9b72d279a2575aac73f324effb2
2020-07-17 10:26:42 -07:00
John Stultz
6993c49233 ANDROID: db845c_gki.fragment: Add QCOM_RPMH and QCOM_RPMHPD as modules
QCOM_RPMH and QCOM_RPMHPD have been pulled out of the GKI
so move it to the db845c fragment config.

Bug: 161478631
Signed-off-by: John Stultz <john.stultz@linaro.org>
Change-Id: Ifcdec07ded287fc87908143ad6a6ff1ce4ae37ac
2020-07-17 08:48:05 -07:00
John Stultz
11ccc4ff47 ANDROID: gki_defconfig: Remove QCOM_RPMH from the gki_defconfig
Per request from qcom, remove the QCOM_RPMH config from
the GKI kernel

Bug: 161478631
Signed-off-by: John Stultz <john.stultz@linaro.org>
Change-Id: I2cbe679bc95d294df1bbecb52b393fb78eaa3f9f
2020-07-17 08:47:55 -07:00
John Stultz
6b20d301a3 ANDROID: Kconfig.gki: Remove GKI_QCOM_CLKS_CONFIGS and QCOM_RPMHPD from GKI_HACKS config option
This removes GKI_QCOM_CLKS_CONFIGS and the one QCOM_RPMHPD
config it selects from the GKI_HACKS config entry, as
we will move it to being a module.

Bug: 161478631
Bug: 161128971
Signed-off-by: John Stultz <john.stultz@linaro.org>
Change-Id: Idc2eedf3ed3bfd3e88f9a577934943f86df16ab3
2020-07-17 08:47:41 -07:00
John Stultz
d3a1390362 FROMLIST: soc: qcom: rpmh: Allow RPMH driver to be loaded as a module
This patch allow the rpmh driver to be loaded as a permenent
module. Meaning it can be loaded from a module, but then cannot
be unloaded.

Ideally, it would include a remove hook and related logic, but
the rpmh driver is fairly core to the system, so once its loaded
with almost anythign else to get the system to go, the dependencies
are not likely to ever also be removed.

So making it a permenent module at least improves things slightly
over requiring it to be a built in driver.

Feedback would be appreciated!

Cc: Todd Kjos <tkjos@google.com>
Cc: Saravana Kannan <saravanak@google.com>
Cc: Andy Gross <agross@kernel.org>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Rajendra Nayak <rnayak@codeaurora.org>
Cc: linux-arm-msm@vger.kernel.org
Signed-off-by: John Stultz <john.stultz@linaro.org>
Link: https://lore.kernel.org/lkml/20200326224459.105170-3-john.stultz@linaro.org/
Bug: 161478631
Change-Id: I26f57b76c1629e8311d97e6be8f7ff4fdac65ba9
2020-07-17 08:47:28 -07:00
John Stultz
67e0298d3d UPSTREAM: soc: qcom: rpmhpd: Allow RPMHPD driver to be loaded as a module
This patch allow the rpmhpd driver to be loaded as a permenent
module. Meaning it can be loaded from a module, but then cannot
be unloaded.

Ideally, it would include a remove hook and related logic, but
apparently the genpd code isn't able to track usage and cleaning
things up?

So making it a permenent module at least improves things slightly
over requiring it to be a built in driver.

Cc: Todd Kjos <tkjos@google.com>
Cc: Saravana Kannan <saravanak@google.com>
Cc: Andy Gross <agross@kernel.org>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Rajendra Nayak <rnayak@codeaurora.org>
Cc: linux-arm-msm@vger.kernel.org
Acked-by: Saravana Kannan <saravanak@google.com>
Tested-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Link: https://lore.kernel.org/r/20200326224459.105170-4-john.stultz@linaro.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
(cherry picked from commit d4889ec1fc6ac6321cc1e8b35bb656f970926a09)
Bug: 161478631
Bug: 161128971
Signed-off-by: John Stultz <john.stultz@linaro.org>
Change-Id: I39f8525cfbe206d27cfd268c2a0b7637bb07814c
2020-07-17 08:46:29 -07:00
Alistair Delva
02ea240257 ANDROID: GKI: Export memblock_free to drivers
On architectures that support the preservation of memblock metadata
after __init, allow drivers to call memblock_free() to free a
reservation made by early arch code. This is a hack to support the
freeing of bootsplash reservations passed to Linux by the bootloader.

(This should be reworked in future versions of Android; do not
cherry-pick this patch forward.)

Bug: 139653858
Change-Id: I32c0ee70c33c94deff70aa548896caa9978396fb
Signed-off-by: Alistair Delva <adelva@google.com>
2020-07-17 14:35:18 +00:00
Greg Kroah-Hartman
882b7ca141 ANDROID: GKI: do not export symbol_get/put()
People keep trying to use these in Android kernels, and they should not
be used, use the correct, real, symbol name instead.

Turn off a number of things in the allmodconfig builds that were using
these symbols to not break the build.  That was for build-testing only,
no functional changes.

Bug: 157965270
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I13bf351b3ae59fa6dfed7bd41dfff8c8d521e3a4
2020-07-17 10:51:18 +02:00
Greg Kroah-Hartman
bafbd0599c ANDROID: add xfs back to allmodconfig build tests
clang is much newer now, it should be building properly.

Bug: 157965270
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ibdab0e4d91aeb90dc24a5d8894f05370c2fd34f1
2020-07-17 08:00:10 +02:00
Chris Lew
6839fc80fe FROMLIST: rpmsg: core: Add signal API support
RPMSG unifies various transports that provide IPC to a remote proc.
Some of these transports require some set of side band signalling in
order to meet the specifications of the protocol they implement.

The GLINK native transport supports the tty serial signals to start
communication with modems that expect to receive the DTR serial signal.

Extend the rpmsg core with an interface to send and receive sideband
signals for the transports that need it.

Bug: 161128971
Link: https://lore.kernel.org/lkml/1593182819-30747-2-git-send-email-deesin@codeaurora.org/
Change-Id: I54539d8ddce1bfaec9016c2bec9b5a1372601995
Signed-off-by: Chris Lew <clew@codeaurora.org>
2020-07-17 00:08:34 +00:00
Todd Kjos
bcfc8ee73a ANDROID: GKI: Fix x86 warning on DMA_VIRTUAL_CHANNELS
Add DMADEVICES=y to the x86 gki_defconfig to fix this warning for x86
builds:

arch/x86/configs/gki_defconfig:361:warning: unexpected data: CONFIG_DMADEVICES=y

WARNING: unmet direct dependencies detected for DMA_VIRTUAL_CHANNELS
  Depends on [n]: DMADEVICES [=n]
  Selected by [y]:
  - GKI_HIDDEN_SND_SOC_CONFIGS [=y]

WARNING: unmet direct dependencies detected for DMA_VIRTUAL_CHANNELS
  Depends on [n]: DMADEVICES [=n]
  Selected by [y]:
  - GKI_HIDDEN_SND_SOC_CONFIGS [=y]

Fixes: dd17237d72 ("ANDROID: gki: build-in DMA_VIRTUAL_CHANNELS")
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I6b1613255ca7488748abfbd7e6f626c6e8a000d5
2020-07-16 07:48:46 -07:00
Mark Salyzyn
4b6ca29fa1 ANDROID: GKI: Update ABI and export list for qcom
Leaf changes summary: 593 artifacts changed (1 filtered out)
Changed leaf types summary: 2 leaf types changed
Removed/Changed/Added functions summary: 1 Removed, 585 Changed (1 filtered out), 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 5 Changed, 0 Added variable

1 Removed function:

  [D] 'function void wireless_send_event(net_device*, unsigned int, iwreq_data*, const char*)'

585 functions with some sub-type change:
<redacted>

Signed-off-by: Mark Salyzyn <salyzyn@google.com>
Bug: 140761827
Test: build
Change-Id: I9e7579e1d7d6a088fa7e9cecfb170e25dc61cbf7
2020-07-16 12:41:05 +00:00
Mark Salyzyn
c2f96db077 Revert "ANDROID: net: enable wireless core features with GKI_LEGACY_WEXT_ALLCONFIG"
This reverts commit 8a167346a3.

Signed-off-by: Mark Salyzyn <salyzyn@google.com>
Bug: 140761827
Test: build
Change-Id: Ia0704189e93f7c5d0fc8623bae121434a6936090
2020-07-16 12:40:54 +00:00
Greg Kroah-Hartman
f63bb101e6 Revert "ALSA: compress: fix partial_drain completion state"
This reverts commit 1c54d0d9c4 which is
commit f79a732a8325dfbd570d87f1435019d7e5501c6d upstream as it breaks
the ABI for sound drivers and we don't need the change in the android
trees at this point in time.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ia2e874e50aa4a233fe6edca3f20781060aaa3248
2020-07-16 11:44:45 +02:00
Greg Kroah-Hartman
c7725aece3 Merge 5.4.52 into android11-5.4
Changes in 5.4.52
	KVM: s390: reduce number of IO pins to 1
	spi: spi-fsl-dspi: Adding shutdown hook
	spi: spi-fsl-dspi: Fix lockup if device is removed during SPI transfer
	regmap: fix alignment issue
	perf/x86/rapl: Move RAPL support to common x86 code
	perf/x86/rapl: Fix RAPL config variable bug
	ARM: dts: omap4-droid4: Fix spi configuration and increase rate
	drm/ttm: Fix dma_fence refcnt leak when adding move fence
	drm/tegra: hub: Do not enable orphaned window group
	gpu: host1x: Detach driver on unregister
	drm: mcde: Fix display initialization problem
	ASoC: SOF: Intel: add PCI ID for CometLake-S
	ALSA: hda: Intel: add missing PCI IDs for ICL-H, TGL-H and EKL
	spi: spidev: fix a race between spidev_release and spidev_remove
	spi: spidev: fix a potential use-after-free in spidev_release()
	net: ethernet: mvneta: Fix Serdes configuration for SoCs without comphy
	net: ethernet: mvneta: Add 2500BaseX support for SoCs without comphy
	ixgbe: protect ring accesses with READ- and WRITE_ONCE
	i40e: protect ring accesses with READ- and WRITE_ONCE
	ibmvnic: continue to init in CRQ reset returns H_CLOSED
	powerpc/kvm/book3s64: Fix kernel crash with nested kvm & DEBUG_VIRTUAL
	iommu/vt-d: Don't apply gfx quirks to untrusted devices
	drm: panel-orientation-quirks: Add quirk for Asus T101HA panel
	drm: panel-orientation-quirks: Use generic orientation-data for Acer S1003
	s390/kasan: fix early pgm check handler execution
	cifs: update ctime and mtime during truncate
	ARM: imx6: add missing put_device() call in imx6q_suspend_init()
	scsi: mptscsih: Fix read sense data size
	usb: dwc3: pci: Fix reference count leak in dwc3_pci_resume_work
	block: release bip in a right way in error path
	nvme-rdma: assign completion vector correctly
	x86/entry: Increase entry_stack size to a full page
	sched/core: Check cpus_mask, not cpus_ptr in __set_cpus_allowed_ptr(), to fix mask corruption
	net: qrtr: Fix an out of bounds read qrtr_endpoint_post()
	gpio: pca953x: Override IRQ for one of the expanders on Galileo Gen 2
	gpio: pca953x: Fix GPIO resource leak on Intel Galileo Gen 2
	nl80211: don't return err unconditionally in nl80211_start_ap()
	drm/mediatek: Check plane visibility in atomic_update
	bpf, sockmap: RCU splat with redirect and strparser error or TLS
	bpf, sockmap: RCU dereferenced psock may be used outside RCU block
	netfilter: ipset: call ip_set_free() instead of kfree()
	net: mvneta: fix use of state->speed
	net: cxgb4: fix return error value in t4_prep_fw
	IB/sa: Resolv use-after-free in ib_nl_make_request()
	net: dsa: microchip: set the correct number of ports
	netfilter: conntrack: refetch conntrack after nf_conntrack_update()
	perf report TUI: Fix segmentation fault in perf_evsel__hists_browse()
	perf intel-pt: Fix recording PEBS-via-PT with registers
	perf intel-pt: Fix PEBS sample for XMM registers
	smsc95xx: check return value of smsc95xx_reset
	smsc95xx: avoid memory leak in smsc95xx_bind
	net: hns3: add a missing uninit debugfs when unload driver
	net: hns3: fix use-after-free when doing self test
	ALSA: compress: fix partial_drain completion state
	RDMA/siw: Fix reporting vendor_part_id
	arm64: kgdb: Fix single-step exception handling oops
	nbd: Fix memory leak in nbd_add_socket
	cxgb4: fix all-mask IP address comparison
	IB/mlx5: Fix 50G per lane indication
	qed: Populate nvm-file attributes while reading nvm config partition.
	net/mlx5: Fix eeprom support for SFP module
	net/mlx5e: Fix 50G per lane indication
	bnxt_en: fix NULL dereference in case SR-IOV configuration fails
	net: macb: fix wakeup test in runtime suspend/resume routines
	net: macb: mark device wake capable when "magic-packet" property present
	net: macb: fix call to pm_runtime in the suspend/resume functions
	mlxsw: spectrum_router: Remove inappropriate usage of WARN_ON()
	mlxsw: pci: Fix use-after-free in case of failed devlink reload
	IB/hfi1: Do not destroy hfi1_wq when the device is shut down
	IB/hfi1: Do not destroy link_wq when the device is shut down
	ALSA: opl3: fix infoleak in opl3
	ALSA: hda - let hs_mic be picked ahead of hp_mic
	ALSA: usb-audio: add quirk for MacroSilicon MS2109
	ALSA: usb-audio: Add implicit feedback quirk for RTX6001
	ALSA: hda/realtek - Fix Lenovo Thinkpad X1 Carbon 7th quirk subdevice id
	ALSA: hda/realtek - Enable audio jacks of Acer vCopperbox with ALC269VC
	ALSA: hda/realtek: Enable headset mic of Acer C20-820 with ALC269VC
	ALSA: hda/realtek: Enable headset mic of Acer Veriton N4660G with ALC269VC
	KVM: arm64: Fix definition of PAGE_HYP_DEVICE
	KVM: arm64: Stop clobbering x0 for HVC_SOFT_RESTART
	KVM: arm64: Annotate hyp NMI-related functions as __always_inline
	KVM: x86: bit 8 of non-leaf PDPEs is not reserved
	KVM: x86: Inject #GP if guest attempts to toggle CR4.LA57 in 64-bit mode
	KVM: x86: Mark CR4.TSD as being possibly owned by the guest
	KVM: arm64: Fix kvm_reset_vcpu() return code being incorrect with SVE
	kallsyms: Refactor kallsyms_show_value() to take cred
	module: Refactor section attr into bin attribute
	module: Do not expose section addresses to non-CAP_SYSLOG
	kprobes: Do not expose probe addresses to non-CAP_SYSLOG
	bpf: Check correct cred for CAP_SYSLOG in bpf_dump_raw_ok()
	Revert "ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb"
	btrfs: fix fatal extent_buffer readahead vs releasepage race
	btrfs: fix double put of block group with nocow
	drm/radeon: fix double free
	drm/amdgpu: don't do soft recovery if gpu_recovery=0
	dm: use noio when sending kobject event
	mmc: meson-gx: limit segments to 1 when dram-access-quirk is needed
	ARC: entry: fix potential EFA clobber when TIF_SYSCALL_TRACE
	ARC: elf: use right ELF_ARCH
	s390/setup: init jump labels before command line parsing
	s390/mm: fix huge pte soft dirty copying
	blk-mq: consider non-idle request as "inflight" in blk_mq_rq_inflight()
	dm writecache: reject asynchronous pmem devices
	perf scripts python: export-to-postgresql.py: Fix struct.pack() int argument
	perf scripts python: exported-sql-viewer.py: Fix zero id in call graph 'Find' result
	perf scripts python: exported-sql-viewer.py: Fix zero id in call tree 'Find' result
	perf scripts python: exported-sql-viewer.py: Fix unexpanded 'Find' result
	pwm: jz4740: Fix build failure
	s390: Change s390_kernel_write() return type to match memcpy()
	s390/maccess: add no DAT mode to kernel_write
	Linux 5.4.52

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ib10c465a3556b5c55d6d6c2ec37b6061b32ca75f
2020-07-16 09:48:45 +02:00
Greg Kroah-Hartman
c57b1153a5 Linux 5.4.52 2020-07-16 08:16:48 +02:00
Vasily Gorbik
1a70857590 s390/maccess: add no DAT mode to kernel_write
[ Upstream commit d6df52e9996dcc2062c3d9c9123288468bb95b52 ]

To be able to patch kernel code before paging is initialized do plain
memcpy if DAT is off. This is required to enable early jump label
initialization.

Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-07-16 08:16:48 +02:00
Josh Poimboeuf
627d15eecb s390: Change s390_kernel_write() return type to match memcpy()
[ Upstream commit cb2cceaefb4c4dc28fc27ff1f1b2d258bfc10353 ]

s390_kernel_write()'s function type is almost identical to memcpy().
Change its return type to "void *" so they can be used interchangeably.

Cc: linux-s390@vger.kernel.org
Cc: heiko.carstens@de.ibm.com
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
Acked-by: Miroslav Benes <mbenes@suse.cz>
Acked-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> # s390
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-07-16 08:16:48 +02:00
Uwe Kleine-König
d64dc6118a pwm: jz4740: Fix build failure
When commit 9017dc4fbd59 ("pwm: jz4740: Enhance precision in calculation
of duty cycle") from v5.8-rc1 was backported to v5.4.x its dependency on
commit ce1f9cece057 ("pwm: jz4740: Use clocks from TCU driver") was not
noticed which made the pwm-jz4740 driver fail to build.

As ce1f9cece057 depends on still more rework, just backport a small part
of this commit to make the driver build again. (There is no dependency
on the functionality introduced in ce1f9cece057, just the rate variable
is needed.)

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reported-by: H. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:48 +02:00
Adrian Hunter
d13a78d13d perf scripts python: exported-sql-viewer.py: Fix unexpanded 'Find' result
commit 3a3cf7c570a486b07d9a6e68a77548aea6a8421f upstream.

Using Python version 3.8.2 and PySide2 version 5.14.0, ctrl-F ('Find')
would not expand the tree to the result. Fix by using setExpanded().

Example:

  $ perf record -e intel_pt//u uname
  Linux
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.034 MB perf.data ]
  $ perf script --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-sqlite.py perf.data.db branches calls
  2020-06-26 15:32:14.928997 Creating database ...
  2020-06-26 15:32:14.933971 Writing records...
  2020-06-26 15:32:15.535251 Adding indexes
  2020-06-26 15:32:15.542993 Dropping unused tables
  2020-06-26 15:32:15.549716 Done
  $ python3 ~/libexec/perf-core/scripts/python/exported-sql-viewer.py perf.data.db

  Select: Reports -> Context-Sensitive Call Graph    or     Reports -> Call Tree
  Press: Ctrl-F
  Enter: main
  Press: Enter

Before: line showing 'main' does not display

After: tree is expanded to line showing 'main'

Fixes: ebd70c7dc2 ("perf scripts python: exported-sql-viewer.py: Add ability to find symbols in the call-graph")
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: stable@vger.kernel.org
Link: http://lore.kernel.org/lkml/20200629091955.17090-4-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:47 +02:00
Adrian Hunter
64e8b913c3 perf scripts python: exported-sql-viewer.py: Fix zero id in call tree 'Find' result
commit 031c8d5edb1ddeb6d398f7942ce2a01a1a51ada9 upstream.

Using ctrl-F ('Find') would not find 'unknown' because it matches id
zero.  Fix by excluding id zero from selection.

Example:

   $ perf record -e intel_pt//u uname
   Linux
   [ perf record: Woken up 1 times to write data ]
   [ perf record: Captured and wrote 0.034 MB perf.data ]
   $ perf script --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-sqlite.py perf.data.db branches calls
   2020-06-26 15:32:14.928997 Creating database ...
   2020-06-26 15:32:14.933971 Writing records...
   2020-06-26 15:32:15.535251 Adding indexes
   2020-06-26 15:32:15.542993 Dropping unused tables
   2020-06-26 15:32:15.549716 Done
   $ python3 ~/libexec/perf-core/scripts/python/exported-sql-viewer.py perf.data.db

   Select: Reports -> Call Tree
   Press: Ctrl-F
   Enter: unknown
   Press: Enter

Before: displays 'unknown' not found
After: tree is expanded to line showing 'unknown'

Fixes: ae8b887c00 ("perf scripts python: exported-sql-viewer.py: Add call tree")
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: stable@vger.kernel.org
Link: http://lore.kernel.org/lkml/20200629091955.17090-6-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:47 +02:00
Adrian Hunter
2038998170 perf scripts python: exported-sql-viewer.py: Fix zero id in call graph 'Find' result
commit 7ff520b0a71dd2db695b52ad117d81b7eaf6ff9d upstream.

Using ctrl-F ('Find') would not find 'unknown' because it matches id zero.
Fix by excluding id zero from selection.

Example:

  $ perf record -e intel_pt//u uname
  Linux
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.034 MB perf.data ]
  $ perf script --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-sqlite.py perf.data.db branches calls
  2020-06-26 15:32:14.928997 Creating database ...
  2020-06-26 15:32:14.933971 Writing records...
  2020-06-26 15:32:15.535251 Adding indexes
  2020-06-26 15:32:15.542993 Dropping unused tables
  2020-06-26 15:32:15.549716 Done
  $ python3 ~/libexec/perf-core/scripts/python/exported-sql-viewer.py perf.data.db

  Select: Reports -> Context-Sensitive Call Graph
  Press: Ctrl-F
  Enter: unknown
  Press: Enter

Before: gets stuck
After: tree is expanded to line showing 'unknown'

Fixes: 254c0d820b ("perf scripts python: exported-sql-viewer.py: Factor out CallGraphModelBase")
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: stable@vger.kernel.org
Link: http://lore.kernel.org/lkml/20200629091955.17090-5-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:47 +02:00
Adrian Hunter
e51a811c24 perf scripts python: export-to-postgresql.py: Fix struct.pack() int argument
commit 640432e6bed08e9d5d2ba26856ba3f55008b07e3 upstream.

Python 3.8 is requiring that arguments being packed as integers are also
integers.  Add int() accordingly.

 Before:

   $ perf record -e intel_pt//u uname
   $ perf script --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-postgresql.py perf_data_db branches calls
   2020-06-25 16:09:10.547256 Creating database...
   2020-06-25 16:09:10.733185 Writing to intermediate files...
   Traceback (most recent call last):
     File "/home/ahunter/libexec/perf-core/scripts/python/export-to-postgresql.py", line 1106, in synth_data
       cbr(id, raw_buf)
     File "/home/ahunter/libexec/perf-core/scripts/python/export-to-postgresql.py", line 1058, in cbr
       value = struct.pack("!hiqiiiiii", 4, 8, id, 4, cbr, 4, MHz, 4, percent)
   struct.error: required argument is not an integer
   Fatal Python error: problem in Python trace event handler
   Python runtime state: initialized

   Current thread 0x00007f35d3695780 (most recent call first):
   <no Python frame>
   Aborted (core dumped)

 After:

   $ dropdb perf_data_db
   $ rm -rf perf_data_db-perf-data
   $ perf script --itrace=bep -s ~/libexec/perf-core/scripts/python/export-to-postgresql.py perf_data_db branches calls
   2020-06-25 16:09:40.990267 Creating database...
   2020-06-25 16:09:41.207009 Writing to intermediate files...
   2020-06-25 16:09:41.270915 Copying to database...
   2020-06-25 16:09:41.382030 Removing intermediate files...
   2020-06-25 16:09:41.384630 Adding primary keys
   2020-06-25 16:09:41.541894 Adding foreign keys
   2020-06-25 16:09:41.677044 Dropping unused tables
   2020-06-25 16:09:41.703761 Done

Fixes: aba44287a2 ("perf scripts python: export-to-postgresql.py: Export Intel PT power and ptwrite events")
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: stable@vger.kernel.org
Link: http://lore.kernel.org/lkml/20200629091955.17090-2-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:47 +02:00
Michal Suchanek
299ffecbd5 dm writecache: reject asynchronous pmem devices
commit a46624580376a3a0beb218d94cbc7f258696e29f upstream.

DM writecache does not handle asynchronous pmem. Reject it when
supplied as cache.

Link: https://lore.kernel.org/linux-nvdimm/87lfk5hahc.fsf@linux.ibm.com/
Fixes: 6e84200c0a ("virtio-pmem: Add virtio pmem driver")
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
Acked-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org # 5.3+
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:47 +02:00
Ming Lei
49a7ac29f6 blk-mq: consider non-idle request as "inflight" in blk_mq_rq_inflight()
commit 05a4fed69ff00a8bd83538684cb602a4636b07a7 upstream.

dm-multipath is the only user of blk_mq_queue_inflight().  When
dm-multipath calls blk_mq_queue_inflight() to check if it has
outstanding IO it can get a false negative.  The reason for this is
blk_mq_rq_inflight() doesn't consider requests that are no longer
MQ_RQ_IN_FLIGHT but that are now MQ_RQ_COMPLETE (->complete isn't
called or finished yet) as "inflight".

This causes request-based dm-multipath's dm_wait_for_completion() to
return before all outstanding dm-multipath requests have actually
completed.  This breaks DM multipath's suspend functionality because
blk-mq requests complete after DM's suspend has finished -- which
shouldn't happen.

Fix this by considering any request not in the MQ_RQ_IDLE state
(so either MQ_RQ_COMPLETE or MQ_RQ_IN_FLIGHT) as "inflight" in
blk_mq_rq_inflight().

Fixes: 3c94d83cb3 ("blk-mq: change blk_mq_queue_busy() to blk_mq_queue_inflight()")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:47 +02:00
Janosch Frank
2dfd182451 s390/mm: fix huge pte soft dirty copying
commit 528a9539348a0234375dfaa1ca5dbbb2f8f8e8d2 upstream.

If the pmd is soft dirty we must mark the pte as soft dirty (and not dirty).
This fixes some cases for guest migration with huge page backings.

Cc: <stable@vger.kernel.org> # 4.8
Fixes: bc29b7ac1d ("s390/mm: clean up pte/pmd encoding")
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:47 +02:00
Vasily Gorbik
0d62bc7e96 s390/setup: init jump labels before command line parsing
commit 95e61b1b5d6394b53d147c0fcbe2ae70fbe09446 upstream.

Command line parameters might set static keys. This is true for s390 at
least since commit 6471384af2 ("mm: security: introduce init_on_alloc=1
and init_on_free=1 boot options"). To avoid the following WARN:

static_key_enable_cpuslocked(): static key 'init_on_alloc+0x0/0x40' used
before call to jump_label_init()

call jump_label_init() just before parse_early_param().
jump_label_init() is safe to call multiple times (x86 does that), doesn't
do any memory allocations and hence should be safe to call that early.

Fixes: 6471384af2 ("mm: security: introduce init_on_alloc=1 and init_on_free=1 boot options")
Cc: <stable@vger.kernel.org> # 5.3: d6df52e9996d: s390/maccess: add no DAT mode to kernel_write
Cc: <stable@vger.kernel.org> # 5.3
Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:46 +02:00
Vineet Gupta
e6de7cbbca ARC: elf: use right ELF_ARCH
commit b7faf971081a4e56147f082234bfff55135305cb upstream.

Cc: <stable@vger.kernel.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:46 +02:00
Vineet Gupta
854827a269 ARC: entry: fix potential EFA clobber when TIF_SYSCALL_TRACE
commit 00fdec98d9881bf5173af09aebd353ab3b9ac729 upstream.

Trap handler for syscall tracing reads EFA (Exception Fault Address),
in case strace wants PC of trap instruction (EFA is not part of pt_regs
as of current code).

However this EFA read is racy as it happens after dropping to pure
kernel mode (re-enabling interrupts). A taken interrupt could
context-switch, trigger a different task's trap, clobbering EFA for this
execution context.

Fix this by reading EFA early, before re-enabling interrupts. A slight
side benefit is de-duplication of FAKE_RET_FROM_EXCPN in trap handler.
The trap handler is common to both ARCompact and ARCv2 builds too.

This just came out of code rework/review and no real problem was reported
but is clearly a potential problem specially for strace.

Cc: <stable@vger.kernel.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:46 +02:00
Neil Armstrong
37634f502b mmc: meson-gx: limit segments to 1 when dram-access-quirk is needed
commit 27a5e7d36d383970affae801d77141deafd536a8 upstream.

The actual max_segs computation leads to failure while using the broadcom
sdio brcmfmac/bcmsdh driver, since the driver tries to make usage of
scatter gather.

But with the dram-access-quirk we use a 1,5K SRAM bounce buffer, and the
max_segs current value of 3 leads to max transfers to 4,5k, which doesn't
work.

This patch sets max_segs to 1 to better describe the hardware limitation,
and fix the SDIO functionality with the brcmfmac/bcmsdh driver on Amlogic
G12A/G12B SoCs on boards like SEI510 or Khadas VIM3.

Reported-by: Art Nikpal <art@khadas.com>
Reported-by: Christian Hewitt <christianshewitt@gmail.com>
Fixes: acdc8e71d9 ("mmc: meson-gx: add dram-access-quirk")
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Kevin Hilman <khilman@baylibre.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20200608084458.32014-1-narmstrong@baylibre.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:46 +02:00
Mikulas Patocka
b9fe45efa6 dm: use noio when sending kobject event
commit 6958c1c640af8c3f40fa8a2eee3b5b905d95b677 upstream.

kobject_uevent may allocate memory and it may be called while there are dm
devices suspended. The allocation may recurse into a suspended device,
causing a deadlock. We must set the noio flag when sending a uevent.

The observed deadlock was reported here:
https://www.redhat.com/archives/dm-devel/2020-March/msg00025.html

Reported-by: Khazhismel Kumykov <khazhy@google.com>
Reported-by: Tahsin Erdogan <tahsin@google.com>
Reported-by: Gabriel Krisman Bertazi <krisman@collabora.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:46 +02:00
Marek Olšák
ede24894e8 drm/amdgpu: don't do soft recovery if gpu_recovery=0
commit f4892c327a8e5df7ce16cab40897daf90baf6bec upstream.

It's impossible to debug shader hangs with soft recovery.

Signed-off-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:46 +02:00
Tom Rix
ef8164f03a drm/radeon: fix double free
commit 41855a898650803e24b284173354cc3e44d07725 upstream.

clang static analysis flags this error

drivers/gpu/drm/radeon/ci_dpm.c:5652:9: warning: Use of memory after it is freed [unix.Malloc]
                kfree(rdev->pm.dpm.ps[i].ps_priv);
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/radeon/ci_dpm.c:5654:2: warning: Attempt to free released memory [unix.Malloc]
        kfree(rdev->pm.dpm.ps);
        ^~~~~~~~~~~~~~~~~~~~~~

problem is reported in ci_dpm_fini, with these code blocks.

	for (i = 0; i < rdev->pm.dpm.num_ps; i++) {
		kfree(rdev->pm.dpm.ps[i].ps_priv);
	}
	kfree(rdev->pm.dpm.ps);

The first free happens in ci_parse_power_table where it cleans up locally
on a failure.  ci_dpm_fini also does a cleanup.

	ret = ci_parse_power_table(rdev);
	if (ret) {
		ci_dpm_fini(rdev);
		return ret;
	}

So remove the cleanup in ci_parse_power_table and
move the num_ps calculation to inside the loop so ci_dpm_fini
will know how many array elements to free.

Fixes: cc8dbbb4f6 ("drm/radeon: add dpm support for CI dGPUs (v2)")

Signed-off-by: Tom Rix <trix@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:45 +02:00
Josef Bacik
026f830e0b btrfs: fix double put of block group with nocow
commit 230ed397435e85b54f055c524fcb267ae2ce3bc4 upstream.

While debugging a patch that I wrote I was hitting use-after-free panics
when accessing block groups on unmount.  This turned out to be because
in the nocow case if we bail out of doing the nocow for whatever reason
we need to call btrfs_dec_nocow_writers() if we called the inc.  This
puts our block group, but a few error cases does

if (nocow) {
    btrfs_dec_nocow_writers();
    goto error;
}

unfortunately, error is

error:
	if (nocow)
		btrfs_dec_nocow_writers();

so we get a double put on our block group.  Fix this by dropping the
error cases calling of btrfs_dec_nocow_writers(), as it's handled at the
error label now.

Fixes: 762bf09893 ("btrfs: improve error handling in run_delalloc_nocow")
CC: stable@vger.kernel.org # 5.4+
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:45 +02:00
Boris Burkov
808b2b3ea8 btrfs: fix fatal extent_buffer readahead vs releasepage race
commit 6bf9cd2eed9aee6d742bb9296c994a91f5316949 upstream.

Under somewhat convoluted conditions, it is possible to attempt to
release an extent_buffer that is under io, which triggers a BUG_ON in
btrfs_release_extent_buffer_pages.

This relies on a few different factors. First, extent_buffer reads done
as readahead for searching use WAIT_NONE, so they free the local extent
buffer reference while the io is outstanding. However, they should still
be protected by TREE_REF. However, if the system is doing signficant
reclaim, and simultaneously heavily accessing the extent_buffers, it is
possible for releasepage to race with two concurrent readahead attempts
in a way that leaves TREE_REF unset when the readahead extent buffer is
released.

Essentially, if two tasks race to allocate a new extent_buffer, but the
winner who attempts the first io is rebuffed by a page being locked
(likely by the reclaim itself) then the loser will still go ahead with
issuing the readahead. The loser's call to find_extent_buffer must also
race with the reclaim task reading the extent_buffer's refcount as 1 in
a way that allows the reclaim to re-clear the TREE_REF checked by
find_extent_buffer.

The following represents an example execution demonstrating the race:

            CPU0                                                         CPU1                                           CPU2
reada_for_search                                            reada_for_search
  readahead_tree_block                                        readahead_tree_block
    find_create_tree_block                                      find_create_tree_block
      alloc_extent_buffer                                         alloc_extent_buffer
                                                                  find_extent_buffer // not found
                                                                  allocates eb
                                                                  lock pages
                                                                  associate pages to eb
                                                                  insert eb into radix tree
                                                                  set TREE_REF, refs == 2
                                                                  unlock pages
                                                              read_extent_buffer_pages // WAIT_NONE
                                                                not uptodate (brand new eb)
                                                                                                            lock_page
                                                                if !trylock_page
                                                                  goto unlock_exit // not an error
                                                              free_extent_buffer
                                                                release_extent_buffer
                                                                  atomic_dec_and_test refs to 1
        find_extent_buffer // found
                                                                                                            try_release_extent_buffer
                                                                                                              take refs_lock
                                                                                                              reads refs == 1; no io
          atomic_inc_not_zero refs to 2
          mark_buffer_accessed
            check_buffer_tree_ref
              // not STALE, won't take refs_lock
              refs == 2; TREE_REF set // no action
    read_extent_buffer_pages // WAIT_NONE
                                                                                                              clear TREE_REF
                                                                                                              release_extent_buffer
                                                                                                                atomic_dec_and_test refs to 1
                                                                                                                unlock_page
      still not uptodate (CPU1 read failed on trylock_page)
      locks pages
      set io_pages > 0
      submit io
      return
    free_extent_buffer
      release_extent_buffer
        dec refs to 0
        delete from radix tree
        btrfs_release_extent_buffer_pages
          BUG_ON(io_pages > 0)!!!

We observe this at a very low rate in production and were also able to
reproduce it in a test environment by introducing some spurious delays
and by introducing probabilistic trylock_page failures.

To fix it, we apply check_tree_ref at a point where it could not
possibly be unset by a competing task: after io_pages has been
incremented. All the codepaths that clear TREE_REF check for io, so they
would not be able to clear it after this point until the io is done.

Stack trace, for reference:
[1417839.424739] ------------[ cut here ]------------
[1417839.435328] kernel BUG at fs/btrfs/extent_io.c:4841!
[1417839.447024] invalid opcode: 0000 [#1] SMP
[1417839.502972] RIP: 0010:btrfs_release_extent_buffer_pages+0x20/0x1f0
[1417839.517008] Code: ed e9 ...
[1417839.558895] RSP: 0018:ffffc90020bcf798 EFLAGS: 00010202
[1417839.570816] RAX: 0000000000000002 RBX: ffff888102d6def0 RCX: 0000000000000028
[1417839.586962] RDX: 0000000000000002 RSI: ffff8887f0296482 RDI: ffff888102d6def0
[1417839.603108] RBP: ffff88885664a000 R08: 0000000000000046 R09: 0000000000000238
[1417839.619255] R10: 0000000000000028 R11: ffff88885664af68 R12: 0000000000000000
[1417839.635402] R13: 0000000000000000 R14: ffff88875f573ad0 R15: ffff888797aafd90
[1417839.651549] FS:  00007f5a844fa700(0000) GS:ffff88885f680000(0000) knlGS:0000000000000000
[1417839.669810] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[1417839.682887] CR2: 00007f7884541fe0 CR3: 000000049f609002 CR4: 00000000003606e0
[1417839.699037] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[1417839.715187] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[1417839.731320] Call Trace:
[1417839.737103]  release_extent_buffer+0x39/0x90
[1417839.746913]  read_block_for_search.isra.38+0x2a3/0x370
[1417839.758645]  btrfs_search_slot+0x260/0x9b0
[1417839.768054]  btrfs_lookup_file_extent+0x4a/0x70
[1417839.778427]  btrfs_get_extent+0x15f/0x830
[1417839.787665]  ? submit_extent_page+0xc4/0x1c0
[1417839.797474]  ? __do_readpage+0x299/0x7a0
[1417839.806515]  __do_readpage+0x33b/0x7a0
[1417839.815171]  ? btrfs_releasepage+0x70/0x70
[1417839.824597]  extent_readpages+0x28f/0x400
[1417839.833836]  read_pages+0x6a/0x1c0
[1417839.841729]  ? startup_64+0x2/0x30
[1417839.849624]  __do_page_cache_readahead+0x13c/0x1a0
[1417839.860590]  filemap_fault+0x6c7/0x990
[1417839.869252]  ? xas_load+0x8/0x80
[1417839.876756]  ? xas_find+0x150/0x190
[1417839.884839]  ? filemap_map_pages+0x295/0x3b0
[1417839.894652]  __do_fault+0x32/0x110
[1417839.902540]  __handle_mm_fault+0xacd/0x1000
[1417839.912156]  handle_mm_fault+0xaa/0x1c0
[1417839.921004]  __do_page_fault+0x242/0x4b0
[1417839.930044]  ? page_fault+0x8/0x30
[1417839.937933]  page_fault+0x1e/0x30
[1417839.945631] RIP: 0033:0x33c4bae
[1417839.952927] Code: Bad RIP value.
[1417839.960411] RSP: 002b:00007f5a844f7350 EFLAGS: 00010206
[1417839.972331] RAX: 000000000000006e RBX: 1614b3ff6a50398a RCX: 0000000000000000
[1417839.988477] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000002
[1417840.004626] RBP: 00007f5a844f7420 R08: 000000000000006e R09: 00007f5a94aeccb8
[1417840.020784] R10: 00007f5a844f7350 R11: 0000000000000000 R12: 00007f5a94aecc79
[1417840.036932] R13: 00007f5a94aecc78 R14: 00007f5a94aecc90 R15: 00007f5a94aecc40

CC: stable@vger.kernel.org # 4.4+
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Boris Burkov <boris@bur.io>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:45 +02:00
Greg Kroah-Hartman
5a046d75ac Revert "ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb"
This reverts commit b5c8896bc1 which is
commit 2bbcaaee1fcbd83272e29f31e2bb7e70d8c49e05 upstream.

It is being reverted upstream, just hasn't made it there yet and is
causing lots of problems.

Reported-by: Hans de Goede <hdegoede@redhat.com>
Cc: Qiujun Huang <hqjagain@gmail.com>
Cc: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:45 +02:00
Kees Cook
baef8d1027 bpf: Check correct cred for CAP_SYSLOG in bpf_dump_raw_ok()
commit 63960260457a02af2a6cb35d75e6bdb17299c882 upstream.

When evaluating access control over kallsyms visibility, credentials at
open() time need to be used, not the "current" creds (though in BPF's
case, this has likely always been the same). Plumb access to associated
file->f_cred down through bpf_dump_raw_ok() and its callers now that
kallsysm_show_value() has been refactored to take struct cred.

Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: bpf@vger.kernel.org
Cc: stable@vger.kernel.org
Fixes: 7105e828c0 ("bpf: allow for correlation of maps and helpers in dump")
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:45 +02:00
Kees Cook
e5541c6347 kprobes: Do not expose probe addresses to non-CAP_SYSLOG
commit 60f7bb66b88b649433bf700acfc60c3f24953871 upstream.

The kprobe show() functions were using "current"'s creds instead
of the file opener's creds for kallsyms visibility. Fix to use
seq_file->file->f_cred.

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: stable@vger.kernel.org
Fixes: 81365a947d ("kprobes: Show address of kprobes if kallsyms does")
Fixes: ffb9bd68eb ("kprobes: Show blacklist addresses as same as kallsyms does")
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:45 +02:00
Kees Cook
314ac273f0 module: Do not expose section addresses to non-CAP_SYSLOG
commit b25a7c5af9051850d4f3d93ca500056ab6ec724b upstream.

The printing of section addresses in /sys/module/*/sections/* was not
using the correct credentials to evaluate visibility.

Before:

 # cat /sys/module/*/sections/.*text
 0xffffffffc0458000
 ...
 # capsh --drop=CAP_SYSLOG -- -c "cat /sys/module/*/sections/.*text"
 0xffffffffc0458000
 ...

After:

 # cat /sys/module/*/sections/*.text
 0xffffffffc0458000
 ...
 # capsh --drop=CAP_SYSLOG -- -c "cat /sys/module/*/sections/.*text"
 0x0000000000000000
 ...

Additionally replaces the existing (safe) /proc/modules check with
file->f_cred for consistency.

Reported-by: Dominik Czarnota <dominik.czarnota@trailofbits.com>
Fixes: be71eda538 ("module: Fix display of wrong module .text address")
Cc: stable@vger.kernel.org
Tested-by: Jessica Yu <jeyu@kernel.org>
Acked-by: Jessica Yu <jeyu@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:45 +02:00
Kees Cook
0d5d9413a6 module: Refactor section attr into bin attribute
commit ed66f991bb19d94cae5d38f77de81f96aac7813f upstream.

In order to gain access to the open file's f_cred for kallsym visibility
permission checks, refactor the module section attributes to use the
bin_attribute instead of attribute interface. Additionally removes the
redundant "name" struct member.

Cc: stable@vger.kernel.org
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Tested-by: Jessica Yu <jeyu@kernel.org>
Acked-by: Jessica Yu <jeyu@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:44 +02:00
Kees Cook
2a6c8d3d0d kallsyms: Refactor kallsyms_show_value() to take cred
commit 160251842cd35a75edfb0a1d76afa3eb674ff40a upstream.

In order to perform future tests against the cred saved during open(),
switch kallsyms_show_value() to operate on a cred, and have all current
callers pass current_cred(). This makes it very obvious where callers
are checking the wrong credential in their "read" contexts. These will
be fixed in the coming patches.

Additionally switch return value to bool, since it is always used as a
direct permission check, not a 0-on-success, negative-on-error style
function return.

Cc: stable@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-07-16 08:16:44 +02:00
Steven Price
79aaeec712 KVM: arm64: Fix kvm_reset_vcpu() return code being incorrect with SVE
If SVE is enabled then 'ret' can be assigned the return value of
kvm_vcpu_enable_sve() which may be 0 causing future "goto out" sites to
erroneously return 0 on failure rather than -EINVAL as expected.

Remove the initialisation of 'ret' and make setting the return value
explicit to avoid this situation in the future.

Fixes: 9a3cdf26e3 ("KVM: arm64/sve: Allow userspace to enable SVE for vcpus")
Cc: stable@vger.kernel.org
Reported-by: James Morse <james.morse@arm.com>
Signed-off-by: Steven Price <steven.price@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20200617105456.28245-1-steven.price@arm.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-07-16 08:16:44 +02:00