Commit graph

902,930 commits

Author SHA1 Message Date
Pablo Neira Ayuso
a0aeb4678b UPSTREAM: netfilter: nf_tables: release batch on table validation from abort path
commit a45e6889575c2067d3c0212b6bc1022891e65b91 upstream.

Unlike early commit path stage which triggers a call to abort, an
explicit release of the batch is required on abort, otherwise mutex is
released and commit_list remains in place.

Add WARN_ON_ONCE to ensure commit_list is empty from the abort path
before releasing the mutex.

After this patch, commit_list is always assumed to be empty before
grabbing the mutex, therefore

  03c1f1ef1584 ("netfilter: Cleanup nft_net->module_list from nf_tables_exit_net()")

only needs to release the pending modules for registration.

Bug: 332996726
Cc: stable@vger.kernel.org
Fixes: c0391b6ab810 ("netfilter: nf_tables: missing validation from the abort path")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit b0b36dcbe0f24383612e5e62bd48df5a8107f7fc)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I38f9b05ac4eadd1d2b7b306cccaf0aeacb61b57a
2024-04-15 10:48:28 +00:00
Pablo Neira Ayuso
ba915b85e5 UPSTREAM: netfilter: nf_tables: mark set as dead when unbinding anonymous set with timeout
commit 552705a3650bbf46a22b1adedc1b04181490fc36 upstream.

While the rhashtable set gc runs asynchronously, a race allows it to
collect elements from anonymous sets with timeouts while it is being
released from the commit path.

Mingi Cho originally reported this issue in a different path in 6.1.x
with a pipapo set with low timeouts which is not possible upstream since
7395dfacfff6 ("netfilter: nf_tables: use timestamp to check for set
element timeout").

Fix this by setting on the dead flag for anonymous sets to skip async gc
in this case.

According to 08e4c8c5919f ("netfilter: nf_tables: mark newset as dead on
transaction abort"), Florian plans to accelerate abort path by releasing
objects via workqueue, therefore, this sets on the dead flag for abort
path too.

Bug: 329205787
Cc: stable@vger.kernel.org
Fixes: 5f68718b34a5 ("netfilter: nf_tables: GC transaction API to avoid race with control plane")
Reported-by: Mingi Cho <mgcho.minic@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 406b0241d0eb598a0b330ab20ae325537d8d8163)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I6170493c267e020c50a739150f8c421deb635b35
2024-04-15 09:54:13 +01:00
Carlos Llamas
66f4b04cb0 FROMLIST: binder: check offset alignment in binder_get_object()
Commit 6d98eb95b450 ("binder: avoid potential data leakage when copying
txn") introduced changes to how binder objects are copied. In doing so,
it unintentionally removed an offset alignment check done through calls
to binder_alloc_copy_from_buffer() -> check_buffer().

These calls were replaced in binder_get_object() with copy_from_user(),
so now an explicit offset alignment check is needed here. This avoids
later complications when unwinding the objects gets harder.

It is worth noting this check existed prior to commit 7a67a39320
("binder: add function to copy binder object from buffer"), likely
removed due to redundancy at the time.

Fixes: 6d98eb95b450 ("binder: avoid potential data leakage when copying txn")
Cc:  <stable@vger.kernel.org>
Acked-by: Todd Kjos <tkjos@google.com>
Signed-off-by: Carlos Llamas <cmllamas@google.com>

Bug: 320661088
Link: https://lore.kernel.org/all/20240330190115.1877819-1-cmllamas@google.com/
Change-Id: Iaddabaa28de7ba7b7d35dbb639d38ca79dbc5077
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2024-04-01 16:16:30 +00:00
Greg Kroah-Hartman
7570ec5696 Merge tag 'android11-5.4.268_r00' into android11-5.4
This merges up to the 5.4.268 LTS release into the android11-5.4 branch.
included in here are the following commits:

* 8eb6062606 ANDROID: GKI: db845c: Update symbols list and ABI
*   5400c339e0 Merge "Merge branch 'android11-5.4' into branch 'android11-5.4-lts'" into android11-5.4-lts
|\
| * 16a567b6c7 Merge branch 'android11-5.4' into branch 'android11-5.4-lts'
* | c980fbd6a6 UPSTREAM: drm/msm/dsi: Enable runtime PM
* | 7c607fec96 UPSTREAM: PM: runtime: Have devm_pm_runtime_enable() handle pm_runtime_dont_use_autosuspend()
* | f9f96d9da7 UPSTREAM: PM: runtime: add devm_pm_runtime_enable helper
|/
* b70f9975af FROMGIT: clk: qcom: gcc-sdm845: Add soft dependency on rpmhpd
*   74299cb130 Merge 5.4.268 into android11-5.4-lts
|\
| * f0602893f4 Linux 5.4.268
| * 5ff9836ab0 arm64: dts: armada-3720-turris-mox: set irq type for RTC
| * 300a55a3a6 perf top: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set
| * ea5587946a i2c: s3c24xx: fix transferring more than one message in polling mode
| * 90734f1cde i2c: s3c24xx: fix read transfers in polling mode
| * 05b6d0234a mlxsw: spectrum_acl_erp: Fix error flow of pool allocation failure
| * d5661f46c1 kdb: Fix a potential buffer overflow in kdb_local()
| * cf6260a34d kdb: Censor attempts to set PROMPT without ENABLE_MEM_READ
| * 36b6db699c ipvs: avoid stat macros calls from preemptible context
| * 4c8a827d68 netfilter: nf_tables: skip dead set elements in netlink dump
| * db9fda526c net: dsa: vsc73xx: Add null pointer check to vsc73xx_gpio_probe
| * 8efe3e8a6c net: ravb: Fix dma_addr_t truncation in error case
| * f7a153e3ac net: phy: micrel: populate .soft_reset for KSZ9131
| * 02467ab8b4 net: qualcomm: rmnet: fix global oob in rmnet_policy
| * 5b58cfcd4c s390/pci: fix max size calculation in zpci_memcpy_toio()
| * 14a7e3a0d0 PCI: keystone: Fix race condition when initializing PHYs
| * 40d171ef23 nvmet-tcp: Fix the H2C expected PDU len calculation
| * 258dccd67b serial: imx: Correct clock error message in function probe()
| * 1d8e62b556 apparmor: avoid crash when parsed profile name is empty
| * 4cd5db4fc4 perf env: Avoid recursively taking env->bpf_progs.lock
| * f19a1cb1f9 perf bpf: Decouple creating the evlist from adding the SB event
| * 739b800279 perf top: Move sb_evlist to 'struct perf_top'
| * 2d59b6ed99 perf record: Move sb_evlist to 'struct record'
| * 14a9769a76 perf env: Add perf_env__numa_node()
| * 9638beb4e1 nvmet-tcp: fix a crash in nvmet_req_complete()
| * ee5e7632e9 nvmet-tcp: Fix a kernel panic when host sends an invalid H2C PDU length
| * 887ab0a444 perf genelf: Set ELF program header addresses properly
| * ed903eeb4e software node: Let args be NULL in software_node_get_reference_args
| * dbb71ba531 acpi: property: Let args be NULL in __acpi_node_get_property_reference
| * b502fb43f7 serial: 8250: omap: Don't skip resource freeing if pm_runtime_resume_and_get() failed
| * d8003fdcc6 MIPS: Alchemy: Fix an out-of-bound access in db1550_dev_setup()
| * 93a7b8d433 MIPS: Alchemy: Fix an out-of-bound access in db1200_dev_setup()
| * fa873e9030 mips: Fix incorrect max_low_pfn adjustment
| * b419fe1180 HID: wacom: Correct behavior when processing some confidence == false touches
| * f7a92bec8e x86/kvm: Do not try to disable kvmclock if it was not enabled
| * 1d6d95aaa6 wifi: mwifiex: configure BSSID consistently when starting AP
| * 249b78dbb1 wifi: rtlwifi: Convert LNKCTL change to PCIe cap RMW accessors
| * c22b4f159b wifi: rtlwifi: Remove bogus and dangerous ASPM disable/enable code
| * b33a303588 rootfs: Fix support for rootfstype= when root= is given
| * 02bd78673b fbdev: flush deferred work in fb_deferred_io_fsync()
| * 7cfc97d1ec ALSA: oxygen: Fix right channel of capture volume mixer
| * 85f6a6590d usb: mon: Fix atomicity violation in mon_bin_vma_fault
| * 14e60d584a usb: typec: class: fix typec_altmode_put_partner to put plugs
| * 94f2aa8145 Revert "usb: typec: class: fix typec_altmode_put_partner to put plugs"
| * a05ebd5779 usb: chipidea: wait controller resume finished for wakeup irq
| * d9c8275c59 Revert "usb: dwc3: don't reset device side if dwc3 was configured as host-only"
| * 548a00780d Revert "usb: dwc3: Soft reset phy on probe for host"
| * c145217af8 usb: dwc: ep0: Update request status in dwc3_ep0_stall_restart
| * 5d5d982701 usb: phy: mxs: remove CONFIG_USB_OTG condition for mxs_phy_is_otg_host()
| * 29032c8e3e tick-sched: Fix idle and iowait sleeptime accounting vs CPU hotplug
| * 5c3d4930c7 binder: fix unused alloc->free_async_space
| * 252a2a5569 binder: fix race between mmput() and do_exit()
| * 4404c2b832 xen-netback: don't produce zero-size SKB frags
| * ee4e9c5fff Revert "ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek"
| * 01fe1b7bb0 Input: atkbd - use ab83 as id when skipping the getid command
| * a53e15e592 binder: fix use-after-free in shinker's callback
| * fc1119a3c6 binder: fix async space check for 0-sized buffers
| * 1b7c039260 of: unittest: Fix of_count_phandle_with_args() expected value message
| * a0a061151a of: Fix double free in of_parse_phandle_with_args_map
| * a9de8a4f52 mmc: sdhci_omap: Fix TI SoC dependencies
| * b8bbe33544 clk: si5341: fix an error code problem in si5341_output_clk_set_rate
| * 4810cce029 watchdog: bcm2835_wdt: Fix WDIOC_SETTIMEOUT handling
| * 11a64041d9 watchdog/hpwdt: Only claim UNKNOWN NMI if from iLO
| * 0d5685c13d watchdog: set cdev owner before adding
| * 777aa44f63 drivers: clk: zynqmp: calculate closest mux rate
| * 5a572eb32f gpu/drm/radeon: fix two memleaks in radeon_vm_init
| * 8b55b06e73 drivers/amd/pm: fix a use-after-free in kv_parse_power_table
| * 06d95c99d5 drm/amd/pm: fix a double-free in si_dpm_init
| * 8ee1fb4c51 drm/amdgpu/debugfs: fix error code when smc register accessors are NULL
| * 68ec0a0211 media: dvbdev: drop refcount on error path in dvb_device_open()
| * 06a9263ac9 media: cx231xx: fix a memleak in cx231xx_init_isoc
| * 6a421928f7 drm/bridge: tc358767: Fix return value on error case
| * d46fe2e93e drm/radeon/trinity_dpm: fix a memleak in trinity_parse_power_table
| * c0769f091f drm/radeon/dpm: fix a memleak in sumo_parse_power_table
| * 5d12c5d75f drm/radeon: check the alloc_workqueue return value in radeon_crtc_init()
| * 09d59f73f4 drm/drv: propagate errors from drm_modeset_register_all()
| * 31b169a8be drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks
| * 9170aa07cb drm/msm/mdp4: flush vblank event on disable
| * 136f919816 ASoC: cs35l34: Fix GPIO name and drop legacy include
| * 86af5d7acf ASoC: cs35l33: Fix GPIO name and drop legacy include
| * 94aa82723a drm/radeon: check return value of radeon_ring_lock()
| * bf48d89123 drm/radeon/r100: Fix integer overflow issues in r100_cs_track_check()
| * 8e5bcb781f drm/radeon/r600_cs: Fix possible int overflows in r600_cs_check_reg()
| * 5624a3c1b1 f2fs: fix to avoid dirent corruption
| * b083ec00f3 drm/bridge: Fix typo in post_disable() description
| * 47aa8fcd5e media: pvrusb2: fix use after free on context disconnection
| * f6a35c21cd RDMA/usnic: Silence uninitialized symbol smatch warnings
| * 9bb9775217 ARM: davinci: always select CONFIG_CPU_ARM926T
| * 3f15ba3dc1 ip6_tunnel: fix NEXTHDR_FRAGMENT handling in ip6_tnl_parse_tlv_enc_lim()
| * dcc9cd5ddb Bluetooth: btmtkuart: fix recv_buf() return value
| * efcfcd5f2b Bluetooth: Fix bogus check for re-auth no supported with non-ssp
| * 598c902649 netfilter: nf_tables: mark newset as dead on transaction abort
| * 8dbaaf71ff wifi: rtlwifi: rtl8192se: using calculate_bit_shift()
| * 8fa54f7532 wifi: rtlwifi: rtl8192ee: using calculate_bit_shift()
| * 4838d16666 wifi: rtlwifi: rtl8192de: using calculate_bit_shift()
| * e15fcb1945 rtlwifi: rtl8192de: make arrays static const, makes object smaller
| * ae1df4cc0a wifi: rtlwifi: rtl8192ce: using calculate_bit_shift()
| * a3a25b5d01 wifi: rtlwifi: rtl8192cu: using calculate_bit_shift()
| * 6f84a338ed wifi: rtlwifi: rtl8192c: using calculate_bit_shift()
| * ee0a81cf7e wifi: rtlwifi: rtl8188ee: phy: using calculate_bit_shift()
| * 7cbcf5fe01 wifi: rtlwifi: add calculate_bit_shift()
| * 4985e507e0 dma-mapping: clear dev->dma_mem to NULL after freeing it
| * 48614d528b virtio/vsock: fix logic which reduces credit update messages
| * 332cd73a92 selftests/net: fix grep checking for fib_nexthop_multiprefix
| * 12b91f3636 scsi: hisi_sas: Replace with standard error code return value
| * 14470da02d arm64: dts: qcom: sdm845-db845c: correct LED panic indicator
| * c23c4984ce scsi: fnic: Return error if vmalloc() failed
| * 16d21bfcb3 wifi: rtlwifi: rtl8821ae: phy: fix an undefined bitwise shift behavior
| * 4a20fa7322 rtlwifi: Use ffs in <foo>_phy_calculate_bit_shift
| * 0226926ba3 firmware: ti_sci: Fix an off-by-one in ti_sci_debugfs_create()
| * ef75f3c56b net/ncsi: Fix netlink major/minor version numbers
| * 7276fac0a6 ncsi: internal.h: Fix a spello
| * f6154d4983 ARM: dts: qcom: apq8064: correct XOADC register address
| * bd1bf5e805 wifi: libertas: stop selecting wext
| * dc843ed97d bpf, lpm: Fix check prefixlen before walking trie
| * 93c71706a1 wifi: rtw88: fix RX filter in FIF_ALLMULTI flag
| * aebe7e47c2 NFSv4.1/pnfs: Ensure we handle the error NFS4ERR_RETURNCONFLICT
| * db55dbbba5 blocklayoutdriver: Fix reference leak of pnfs_device_node
| * e0e3f4a187 crypto: scomp - fix req->dst buffer overflow
| * 77d2b18336 crypto: sahara - do not resize req->src when doing hash operations
| * 53ba86f765 crypto: sahara - fix processing hash requests with req->nbytes < sg->length
| * ba1ef4276e crypto: sahara - improve error handling in sahara_sha_process()
| * 0274697075 crypto: sahara - fix wait_for_completion_timeout() error handling
| * b588ed190b crypto: sahara - fix ahash reqsize
| * aea92cca43 crypto: virtio - Wait for tasklet to complete on device remove
| * efc8ef87ab gfs2: Fix kernel NULL pointer dereference in gfs2_rgrp_dump
| * d1fe1aede6 pstore: ram_core: fix possible overflow in persistent_ram_init_ecc()
| * 6e907574ef crypto: sahara - fix error handling in sahara_hw_descriptor_create()
| * e82d07d5c7 crypto: sahara - fix processing requests with cryptlen < sg->length
| * da43c26203 crypto: sahara - fix ahash selftest failure
| * beb815a000 crypto: sahara - remove FLAGS_NEW_KEY logic
| * 4c10928e31 crypto: af_alg - Disallow multiple in-flight AIO requests
| * ca3484d5ca crypto: ccp - fix memleak in ccp_init_dm_workarea
| * 9fffae6cc4 virtio_crypto: Introduce VIRTIO_CRYPTO_NOSPC
| * 01081d76cc crypto: virtio - don't use 'default m'
| * 830a4f073f crypto: virtio - Handle dataq logic with tasklet
| * 86a7c9ba83 selinux: Fix error priority for bind with AF_UNSPEC on PF_INET6 socket
| * 1bf4fe14e9 mtd: Fix gluebi NULL pointer dereference caused by ftl notifier
| * 6b84cb9e38 spi: sh-msiof: Enforce fixed DTDL for R-Car H3
| * 36e19f8463 calipso: fix memory leak in netlbl_calipso_add_pass()
| * 0396c1e211 netlabel: remove unused parameter in netlbl_netlink_auditinfo()
| * 7b99eafea0 net: netlabel: Fix kerneldoc warnings
| * 6c38e791bd ACPI: LPIT: Avoid u32 multiplication overflow
| * 1e3a2b9b40 ACPI: video: check for error while searching for backlight device parent
| * f5ea2cf3bb mtd: rawnand: Increment IFC_TIMEOUT_MSECS for nand controller response
| * 1e80aa25d1 powerpc/imc-pmu: Add a null pointer check in update_events_in_group()
| * 9da4a56dd3 powerpc/powernv: Add a null pointer check in opal_powercap_init()
| * e93d7cf4c1 powerpc/powernv: Add a null pointer check in opal_event_init()
| * f84c1446da powerpc/powernv: Add a null pointer check to scom_debug_init_one()
| * b0200560b6 selftests/powerpc: Fix error handling in FPU/VMX preemption tests
| * 9b5f03500b powerpc/pseries/memhp: Fix access beyond end of drmem array
| * 69c0b92f78 powerpc/pseries/memhotplug: Quieten some DLPAR operations
| * 5401b689ad powerpc/44x: select I2C for CURRITUCK
| * 245da9eebb powerpc: add crtsavres.o to always-y instead of extra-y
| * 5da3b6e719 EDAC/thunderx: Fix possible out-of-bounds string access
| * 555a2f09a6 x86/lib: Fix overflow when counting digits
| * 6ee48d7102 coresight: etm4x: Fix width of CCITMIN field
| * b00d5f7152 parport: parport_serial: Add Brainboxes device IDs and geometry
| * 760a5ab4d8 parport: parport_serial: Add Brainboxes BAR details
| * e93da893d5 uio: Fix use-after-free in uio_open
| * da488e1aad binder: fix comment on binder_alloc_new_buf() return value
| * a92b2797ca binder: fix trivial typo of binder_free_buf_locked()
| * 9774dabad7 binder: use EPOLLERR from eventpoll.h
| * 5e1eb0dfc9 ACPI: resource: Add another DMI match for the TongFang GMxXGxx
| * c5b0517500 drm/crtc: fix uninitialized variable use
| * cfc6afe930 ARM: sun9i: smp: fix return code check of of_property_match_string
| * ef7152f870 ida: Fix crash in ida_free when the bitmap is empty
| * c97996451f Input: xpad - add Razer Wolverine V2 support
| * 510a7bc368 ARC: fix spare error
| * 0fe6431622 s390/scm: fix virtual vs physical address confusion
| * 8fb5795bcf Input: i8042 - add nomux quirk for Acer P459-G2-M
| * 2c70bf9978 Input: atkbd - skip ATKBD_CMD_GETID in translated mode
| * 3d9a9c0881 reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning
| * 4f7512e779 ring-buffer: Do not record in NMI if the arch does not support cmpxchg in NMI
| * e405c22ee5 tracing: Add size check when printing trace_marker output
| * f787481af4 tracing: Have large events show up as '[LINE TOO BIG]' instead of nothing
| * d4408ffeb8 neighbour: Don't let neigh_forced_gc() disable preemption for long
| * 9cc9683aec drm/crtc: Fix uninit-value bug in drm_mode_setcrtc
| * 2f601e8696 jbd2: correct the printing of write_flags in jbd2_write_superblock()
| * 1c187cb210 clk: rockchip: rk3128: Fix HCLK_OTG gate register
| * 3f50a73fd9 drm/exynos: fix a wrong error checking
| * 8bc21ac17d drm/exynos: fix a potential error pointer dereference
| * 6eb9759328 nvme: introduce helper function to get ctrl state
| * 971c0b10c9 ASoC: da7219: Support low DC impedance headset
| * ec76b9e057 net/tg3: fix race condition in tg3_reset_task()
| * ef9fefca3f nouveau/tu102: flush all pdbs on vmm flush
| * b67005b284 ASoC: rt5650: add mutex to avoid the jack detection failure
| * 4fece6617b ASoC: cs43130: Fix incorrect frame delay configuration
| * 1bf33a67a9 ASoC: cs43130: Fix the position of const qualifier
| * 61c1e46fb8 ASoC: Intel: Skylake: mem leak in skl register function
| * 81610106fd ASoC: nau8822: Fix incorrect type in assignment and cast to restricted __be16
| * ad5a06e163 ASoC: Intel: Skylake: Fix mem leak in few functions
| * 57a95d06da ALSA: hda - Fix speaker and headset mic pin config for CHUWI CoreBook XPro
| * ebc3c8e090 pinctrl: lochnagar: Don't build on MIPS
| * 12cf91e23b f2fs: explicitly null-terminate the xattr list
* | 5826ec2af1 Revert "ipv6: make ip6_rt_gc_expire an atomic_t"
* | fa82780056 Revert "ipv6: remove max_size check inline with ipv4"
* |   bc9b1af36e Merge "Merge 5.4.267 into android11-5.4-lts" into android11-5.4-lts
|\ \
| * | ac7d08f396 Merge 5.4.267 into android11-5.4-lts
| |\|
| | * 9153fc9664 Linux 5.4.267
| | * 69ef165176 ASoC: meson: codec-glue: fix pcm format cast warning
| | * 584756c3d7 ipv6: remove max_size check inline with ipv4
| | * 66b3025202 ipv6: make ip6_rt_gc_expire an atomic_t
| | * ae424c848d net/dst: use a smaller percpu_counter batch for dst entries accounting
| | * 7b3a9c2bf3 PCI: Disable ATS for specific Intel IPU E2000 devices
| | * c6141c49bc PCI: Extract ATS disabling to a helper function
| | * 8711fa0c06 netfilter: nf_tables: Reject tables of unsupported family
| | * c67bf30baf net: tls, update curr on splice as well
| | * c2d9b43855 ath10k: Get rid of "per_ce_irq" hw param
| | * d15f869cb3 ath10k: Keep track of which interrupts fired, don't poll them
| | * 696b992edc ath10k: Add interrupt summary based CE processing
| | * 366df9ecbc ath10k: Wait until copy complete is actually done before completing
| | * c4541e3980 mmc: sdhci-sprd: Fix eMMC init failure after hw reset
| | * a9c9ffcd21 mmc: core: Cancel delayed work before releasing host
| | * bfc3720ca8 mmc: rpmb: fixes pause retune on all RPMB partitions.
| | * 77359c4973 mm: fix unmap_mapping_range high bits shift bug
| | * 5af5e946c4 i2c: core: Fix atomic xfer check for non-preempt config
| | * d8ec24d79d firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards
| | * 85015a96bc mm/memory-failure: check the mapcount of the precise page
| | * 3d8fab93ca net: Implement missing SO_TIMESTAMPING_NEW cmsg support
| | * f7084217d9 bnxt_en: Remove mis-applied code from bnxt_cfg_ntp_filters()
| | * acfeb9039b asix: Add check for usbnet_get_endpoints
| | * 6c00721ad7 net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues
| | * a4ea54c528 net/qla3xxx: switch from 'pci_' to 'dma_' API
| | * 863ca421b4 i40e: Restore VF MSI-X state during PCI reset
| | * 01c2d73ae2 ASoC: meson: g12a-tohdmitx: Fix event generation for S/PDIF mux
| | * bdc00b8c3a ASoC: meson: g12a-tohdmitx: Validate written enum values
| | * fe2d1dda1d ASoC: meson: g12a: extract codec-to-codec utils
| | * 93d80aadc0 i40e: fix use-after-free in i40e_aqc_add_filters()
| | * b40828a2ab net: Save and restore msg_namelen in sock_sendmsg
| | * 68c8fdb9f9 net: bcmgenet: Fix FCS generation for fragmented skbuffs
| | * 4c0fa624a6 ARM: sun9i: smp: Fix array-index-out-of-bounds read in sunxi_mc_smp_init
| | * c1556217ff net-timestamp: extend SOF_TIMESTAMPING_OPT_ID to HW timestamps
| | * 2cdb650848 can: raw: add support for SO_MARK
| | * 96a6d1bb28 can: raw: add support for SO_TXTIME/SCM_TXTIME
| | * b1719cbb73 net: sched: em_text: fix possible memory leak in em_text_destroy()
| | * ef4fd7518c i40e: Fix filter input checks to prevent config with invalid values
| | * 65c6ef02ff nfc: llcp_core: Hold a ref to llcp_local->dev when holding a ref to llcp_local
* | | 6ba3eed4fa ANDROID: db845c: Enable device tree overlay support
|/ /
* / 0d5ac7fe30 Merge 5.4.266 into android11-5.4-lts
|/
* 4410df7011 Linux 5.4.266
* 7d0f1fd80a block: Don't invalidate pagecache for invalid falloc modes
* a0678f5047 ring-buffer: Fix wake ups when buffer_percent is set to 100
* 508e2fdd97 smb: client: fix OOB in smbCalcSize()
* 644b956c94 usb: fotg210-hcd: delete an incorrect bounds test
* a56a19e44b x86/alternatives: Sync core before enabling interrupts
* 4111986fb9 net: rfkill: gpio: set GPIO direction
* 5c375a83d1 net: 9p: avoid freeing uninit memory in p9pdu_vreadf
* 4e7f3899fb Bluetooth: hci_event: Fix not checking if HCI_OP_INQUIRY has been sent
* a83debb523 USB: serial: option: add Quectel RM500Q R13 firmware support
* c82ba4cb44 USB: serial: option: add Foxconn T99W265 with new baseline
* 1f87ba56c4 USB: serial: option: add Quectel EG912Y module support
* a59cb26bc1 USB: serial: ftdi_sio: update Actisense PIDs constant names
* a70b1933fa wifi: cfg80211: fix certs build to not depend on file order
* e8fb002051 wifi: cfg80211: Add my certificate
* 8717fd6d0c iio: adc: ti_am335x_adc: Fix return value check of tiadc_request_dma()
* 45af72f149 iio: common: ms_sensors: ms_sensors_i2c: fix humidity conversion time table
* 4257c16c14 scsi: bnx2fc: Fix skb double free in bnx2fc_rcv()
* e1b31edfe7 Input: ipaq-micro-keys - add error handling for devm_kmemdup
* a85d6aa2b5 iio: imu: inv_mpu6050: fix an error code problem in inv_mpu6050_read_raw
* 388c90c577 interconnect: Treat xlate() returning NULL node as an error
* 04c2223344 btrfs: do not allow non subvolume root targets for snapshot
* 3230a69e66 smb: client: fix NULL deref in asn1_ber_decoder()
* 0ccb39511a ALSA: hda/hdmi: add force-connect quirk for NUC5CPYB
* 6bcf819198 ALSA: hda/hdmi: Add quirk to force pin connectivity on NUC10
* 34e6c4c6a9 pinctrl: at91-pio4: use dedicated lock class for IRQ
* 624659563e i2c: aspeed: Handle the coalesced stop conditions with the start conditions.
* 47ae524229 afs: Fix overwriting of result of DNS query
* c04b7b28c9 net: check dev->gso_max_size in gso_features_check()
* 761ee09e9f net: warn if gso_type isn't set for a GSO SKB
* eec7ef60d2 afs: Fix dynamic root lookup DNS check
* 82d64cbe48 afs: Fix the dynamic root's d_delete to always delete unused dentries
* 2b4600fb69 net: check vlan filter feature in vlan_vids_add_by_dev() and vlan_vids_del_by_dev()
* b10265532d net/rose: fix races in rose_kill_by_device()
* ed4cb8a42c ethernet: atheros: fix a memleak in atl1e_setup_ring_resources
* 3f82a6a6d7 net: sched: ife: fix potential use-after-free
* f48e3337ab net/mlx5e: Correct snprintf truncation handling for fw_version buffer used by representors
* d07ef3a870 net/mlx5: Fix fw tracer first block check
* a46bb28fdb net/mlx5: improve some comments
* 333fd10955 Revert "net/mlx5e: fix double free of encap_header"
* 7bd305f5f2 wifi: mac80211: mesh_plink: fix matches_local logic
* 76366b399a s390/vx: fix save/restore of fpu kernel context
* f40d484e16 reset: Fix crash when freeing non-existent optional resets
* 14d915ca5a ARM: OMAP2+: Fix null pointer dereference and memory leak in omap_soc_device_init
* 62ef5887dd ksmbd: fix wrong name of SMB2_CREATE_ALLOCATION_SIZE
* 35e12efde0 ALSA: hda/realtek: Enable headset on Lenovo M90 Gen5

Updates the .xml file to add the new needed symbol:

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

1 Added function:

  [A] 'function int devm_pm_runtime_enable(device*)'

Change-Id: I1e68409087f3f833dbfcdbfc56546d982d22d10c
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2024-03-27 18:12:26 +00:00
Jaegeuk Kim
b558f0cc4d BACKPORT: f2fs: expose # of overprivision segments
This is useful when checking conditions during checkpoint=disable in Android.

Bug: 330501081
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit ed5309ad137e1f467ca1e1b61be3dc39d144316c)
[hakan: Resolved minor conflict in Documentation/ABI/testing/sysfs-fs-f2fs]
Signed-off-by: Håkan Kvist <hakan.kvist@sony.com>
Change-Id: I0bd59501836fbe8fe361da2872ae660f3ac1f541
2024-03-21 22:07:44 +00:00
xuguangyang
ffb0cc5261 ANDROID: GKI: Update symbol list for Zebra
Update the android/abi_gki_aarch64_zebra

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

1 Added function:

  [A] 'function void prandom_bytes(void*, unsigned long int)'

Bug: 330656237

Change-Id: I703f92b9f2ee27cf5280cc56ba94e8f2242c248f
Signed-off-by: xuguangyang <xuguangyang91@gmail.com>
2024-03-21 07:46:19 +00:00
xuguangyang
d24801ee88 ANDROID: GKI: Update symbol list for Zebra
Update the android/abi_gki_aarch64_zebra

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

2 Added functions:

  [A] 'function int dev_change_flags(net_device*, unsigned int, netlink_ext_ack*)'
  [A] 'function net_device* netdev_master_upper_dev_get(net_device*)'

Bug: 328360926

Change-Id: Ica1469e5793dc5fb2627aa20b431e42d590eea37
Signed-off-by: xuguangyang <xuguangyang91@gmail.com>
2024-03-06 10:55:54 +00:00
Andrey Konovalov
26423f6f2f UPSTREAM: usb: raw-gadget: properly handle interrupted requests
Currently, if a USB request that was queued by Raw Gadget is interrupted
(via a signal), wait_for_completion_interruptible returns -ERESTARTSYS.
Raw Gadget then attempts to propagate this value to userspace as a return
value from its ioctls. However, when -ERESTARTSYS is returned by a syscall
handler, the kernel internally restarts the syscall.

This doesn't allow userspace applications to interrupt requests queued by
Raw Gadget (which is required when the emulated device is asked to switch
altsettings). It also violates the implied interface of Raw Gadget that a
single ioctl must only queue a single USB request.

Instead, make Raw Gadget do what GadgetFS does: check whether the request
was interrupted (dequeued with status == -ECONNRESET) and report -EINTR to
userspace.

Bug: 254441685
Fixes: f2c2e717642c ("usb: gadget: add raw-gadget interface")
Cc: stable <stable@kernel.org>
Signed-off-by: Andrey Konovalov <andreyknvl@gmail.com>
Link: https://lore.kernel.org/r/0db45b1d7cc466e3d4d1ab353f61d63c977fbbc5.1698350424.git.andreyknvl@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit e8033bde451eddfb9b1bbd6e2d848c1b5c277222)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I1509b30c9962d6e695b268c183e41bdd551f1780
2024-02-28 12:51:50 +00:00
Paolo Abeni
1306a39bd6 UPSTREAM: net: prevent skb corruption on frag list segmentation
Ian reported several skb corruptions triggered by rx-gro-list,
collecting different oops alike:

[   62.624003] BUG: kernel NULL pointer dereference, address: 00000000000000c0
[   62.631083] #PF: supervisor read access in kernel mode
[   62.636312] #PF: error_code(0x0000) - not-present page
[   62.641541] PGD 0 P4D 0
[   62.644174] Oops: 0000 [#1] PREEMPT SMP NOPTI
[   62.648629] CPU: 1 PID: 913 Comm: napi/eno2-79 Not tainted 6.4.0 #364
[   62.655162] Hardware name: Supermicro Super Server/A2SDi-12C-HLN4F, BIOS 1.7a 10/13/2022
[   62.663344] RIP: 0010:__udp_gso_segment (./include/linux/skbuff.h:2858
./include/linux/udp.h:23 net/ipv4/udp_offload.c:228 net/ipv4/udp_offload.c:261
net/ipv4/udp_offload.c:277)
[   62.687193] RSP: 0018:ffffbd3a83b4f868 EFLAGS: 00010246
[   62.692515] RAX: 00000000000000ce RBX: 0000000000000000 RCX: 0000000000000000
[   62.699743] RDX: ffffa124def8a000 RSI: 0000000000000079 RDI: ffffa125952a14d4
[   62.706970] RBP: ffffa124def8a000 R08: 0000000000000022 R09: 00002000001558c9
[   62.714199] R10: 0000000000000000 R11: 00000000be554639 R12: 00000000000000e2
[   62.721426] R13: ffffa125952a1400 R14: ffffa125952a1400 R15: 00002000001558c9
[   62.728654] FS:  0000000000000000(0000) GS:ffffa127efa40000(0000)
knlGS:0000000000000000
[   62.736852] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   62.742702] CR2: 00000000000000c0 CR3: 00000001034b0000 CR4: 00000000003526e0
[   62.749948] Call Trace:
[   62.752498]  <TASK>
[   62.779267] inet_gso_segment (net/ipv4/af_inet.c:1398)
[   62.787605] skb_mac_gso_segment (net/core/gro.c:141)
[   62.791906] __skb_gso_segment (net/core/dev.c:3403 (discriminator 2))
[   62.800492] validate_xmit_skb (./include/linux/netdevice.h:4862
net/core/dev.c:3659)
[   62.804695] validate_xmit_skb_list (net/core/dev.c:3710)
[   62.809158] sch_direct_xmit (net/sched/sch_generic.c:330)
[   62.813198] __dev_queue_xmit (net/core/dev.c:3805 net/core/dev.c:4210)
net/netfilter/core.c:626)
[   62.821093] br_dev_queue_push_xmit (net/bridge/br_forward.c:55)
[   62.825652] maybe_deliver (net/bridge/br_forward.c:193)
[   62.829420] br_flood (net/bridge/br_forward.c:233)
[   62.832758] br_handle_frame_finish (net/bridge/br_input.c:215)
[   62.837403] br_handle_frame (net/bridge/br_input.c:298
net/bridge/br_input.c:416)
[   62.851417] __netif_receive_skb_core.constprop.0 (net/core/dev.c:5387)
[   62.866114] __netif_receive_skb_list_core (net/core/dev.c:5570)
[   62.871367] netif_receive_skb_list_internal (net/core/dev.c:5638
net/core/dev.c:5727)
[   62.876795] napi_complete_done (./include/linux/list.h:37
./include/net/gro.h:434 ./include/net/gro.h:429 net/core/dev.c:6067)
[   62.881004] ixgbe_poll (drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:3191)
[   62.893534] __napi_poll (net/core/dev.c:6498)
[   62.897133] napi_threaded_poll (./include/linux/netpoll.h:89
net/core/dev.c:6640)
[   62.905276] kthread (kernel/kthread.c:379)
[   62.913435] ret_from_fork (arch/x86/entry/entry_64.S:314)
[   62.917119]  </TASK>

In the critical scenario, rx-gro-list GRO-ed packets are fed, via a
bridge, both to the local input path and to an egress device (tun).

The segmentation of such packets unsafely writes to the cloned skbs
with shared heads.

This change addresses the issue by uncloning as needed the
to-be-segmented skbs.

Bug: 254441685
Reported-by: Ian Kumlien <ian.kumlien@gmail.com>
Tested-by: Ian Kumlien <ian.kumlien@gmail.com>
Fixes: 3a1296a38d0c ("net: Support GRO/GSO fraglist chaining.")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit c329b261afe71197d9da83c1f18eb45a7e97e089)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I781f218d67b94d0cc43166b0ed5cc5240b7a2b20
2024-02-28 12:47:09 +00:00
Pablo Neira Ayuso
502693befb UPSTREAM: netfilter: nft_set_rbtree: skip end interval element from gc
commit 60c0c230c6f046da536d3df8b39a20b9a9fd6af0 upstream.

rbtree lazy gc on insert might collect an end interval element that has
been just added in this transactions, skip end interval elements that
are not yet active.

Bug: 325477234
Fixes: f718863aca46 ("netfilter: nft_set_rbtree: fix overlap expiration walk")
Cc: stable@vger.kernel.org
Reported-by: lonial con <kongln9170@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 10e9cb3931)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I42f7bca418d47948292b15ace9f371b81ccd7fe8
2024-02-27 16:38:00 +00:00
Amit Pundir
8eb6062606 ANDROID: GKI: db845c: Update symbols list and ABI
android11-5.4-lts is broken on Dragonboard 845c because of
recently added symbols.

So updated the symbols list by running:
  "BUILD_CONFIG=common/build.config.db845c \
    KMI_SYMBOL_LIST_ADD_ONLY=1 build/build_abi.sh -s"

And the abi_gki_aarch64 ABI by running:
  "BUILD_CONFIG=common/build.config.gki.aarch64 \
    ABI_DEFINITION=abi_gki_aarch64.xml KMI_SYMBOL_LIST_ADD_ONLY=1 \
     build/build_abi.sh --update --print-report"

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

1 Added function:

  [A] 'function int devm_pm_runtime_enable(device*)'

========================================================

Bug: 146449535
Fixes: c980fbd6a6 ("UPSTREAM: drm/msm/dsi: Enable runtime PM")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: If7144335bef82f758c963964bd57e44a5cfbcf05
2024-02-16 14:40:58 +05:30
Greg Kroah-Hartman
5400c339e0 Merge "Merge branch 'android11-5.4' into branch 'android11-5.4-lts'" into android11-5.4-lts 2024-02-15 13:27:31 +00:00
Greg Kroah-Hartman
16a567b6c7 Merge branch 'android11-5.4' into branch 'android11-5.4-lts'
Merge in the latest changes from 'android11-5.4' into the LTS branch so
we have those changes in here as well.  This includes the following
commits:

* b0b1d6d133 UPSTREAM: net: tls, update curr on splice as well
* 78f2cf25b1 Reapply "perf: Fix perf_event_validate_size()"
* 087b47920c UPSTREAM: ida: Fix crash in ida_free when the bitmap is empty
* 73bfa95eeb UPSTREAM: netfilter: nf_tables: Reject tables of unsupported family
* a34cc1dcf7 Reapply "perf: Disallow mis-matched inherited group reads"
* aea710204a UPSTREAM: ath10k: Get rid of "per_ce_irq" hw param
* 89945968f1 UPSTREAM: ath10k: Keep track of which interrupts fired, don't poll them
* d9f1b99f4c UPSTREAM: ath10k: Add interrupt summary based CE processing
* 0226ac138f UPSTREAM: ath10k: Wait until copy complete is actually done before completing
* a7a2a20fff FROMGIT: clk: qcom: gcc-sdm845: Add soft dependency on rpmhpd
* 80118b745c Merge tag 'android11-5.4.265_r00' into branch 'android11-5.4'
* 70db018a10 UPSTREAM: ipv4: igmp: fix refcnt uaf issue when receiving igmp query packet
* 5ae6be03f5 ANDROID: Snapshot Mainline's version of checkpatch.pl
* f51804072b UPSTREAM: nvmet-tcp: Fix a possible UAF in queue intialization setup
* 0581932d87 UPSTREAM: nvmet-tcp: move send/recv error handling in the send/recv methods instead of call-sites
* 81334f26ac UPSTREAM: netfilter: nf_tables: remove busy mark and gc batch API
* bdb31e6ebb UPSTREAM: netfilter: nft_set_hash: mark set element as dead when deleting from packet path
* a65e87c130 UPSTREAM: netfilter: nf_tables: adapt set backend to use GC transaction API
* adc9cb0683 UPSTREAM: netfilter: nf_tables: GC transaction API to avoid race with control plane
* 4ce6a73326 UPSTREAM: netfilter: nft_set_rbtree: fix overlap expiration walk
* 1b7330db23 UPSTREAM: netfilter: nft_set_rbtree: fix null deref on element insertion
* f896aebc91 UPSTREAM: netfilter: nft_set_rbtree: Switch to node list walk for overlap detection
* 3a298023c9 UPSTREAM: netfilter: nf_tables: drop map element references from preparation phase
* 28ca053314 UPSTREAM: netfilter: nftables: rename set element data activation/deactivation functions
* e85a3e2c8e ANDROID: ABI: Update allowed list for QCOM
* 42ae17e6f4 BACKPORT: ALSA: compress: Allow pause and resume during draining
* a8427caea3 UPSTREAM: netfilter: nf_tables: pass context to nft_set_destroy()
* 1ab45006d5 UPSTREAM: netfilter: nf_tables: don't skip expired elements during walk
* 30cf530fbc ANDROID: GKI: db845c: Update symbols list and ABI on rpmsg_register_device_override
* eb1843e8af ANDROID: Use GKI Dr. No OWNERS file
* bbbaa68181 ANDROID: Remove android/OWNERs file
* b7ba0d931e FROMGIT: Input: uinput - allow injecting event times

Change-Id: I147a09fc7cf8a55fb05e4ecec26028e59c8802ea
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2024-02-14 14:33:47 +00:00
Konrad Dybcio
c980fbd6a6 UPSTREAM: drm/msm/dsi: Enable runtime PM
[ Upstream commit 6ab502bc1cf3147ea1d8540d04b83a7a4cb6d1f1 ]

Some devices power the DSI PHY/PLL through a power rail that we model
as a GENPD. Enable runtime PM to make it suspendable.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/543352/
Link: https://lore.kernel.org/r/20230620-topic-dsiphy_rpm-v2-2-a11a751f34f0@linaro.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Stable-dep-of: 3d07a411b4fa ("drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: I9f1a28e7c47c394fe7200826627a5373455f3826
2024-02-14 12:48:09 +05:30
Douglas Anderson
7c607fec96 UPSTREAM: PM: runtime: Have devm_pm_runtime_enable() handle pm_runtime_dont_use_autosuspend()
[ Upstream commit b4060db9251f919506e4d672737c6b8ab9a84701 ]

The PM Runtime docs say:

  Drivers in ->remove() callback should undo the runtime PM changes done
  in ->probe(). Usually this means calling pm_runtime_disable(),
  pm_runtime_dont_use_autosuspend() etc.

From grepping code, it's clear that many people aren't aware of the
need to call pm_runtime_dont_use_autosuspend().

When brainstorming solutions, one idea that came up was to leverage
the new-ish devm_pm_runtime_enable() function. The idea here is that:

 * When the devm action is called we know that the driver is being
   removed. It's the perfect time to undo the use_autosuspend.

 * The code of pm_runtime_dont_use_autosuspend() already handles the
   case of being called when autosuspend wasn't enabled.

Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Stable-dep-of: 3d07a411b4fa ("drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: I3433f1936cdc52ed4c26263de7c5c6fcd058e30c
2024-02-14 12:48:09 +05:30
Dmitry Baryshkov
f9f96d9da7 UPSTREAM: PM: runtime: add devm_pm_runtime_enable helper
[ Upstream commit b3636a3a2c51715736d3ec45f635ed03191962ce ]

A typical code pattern for pm_runtime_enable() call is to call it in the
_probe function and to call pm_runtime_disable() both from _probe error
path and from _remove function. For some drivers the whole remove
function would consist of the call to pm_remove_disable().

Add helper function to replace this bolierplate piece of code. Calling
devm_pm_runtime_enable() removes the need for calling
pm_runtime_disable() both in the probe()'s error path and in the
remove() function.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20210731195034.979084-2-dmitry.baryshkov@linaro.org
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Stable-dep-of: 3d07a411b4fa ("drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: I43dae0a39612031a88d6cfdb9e7a02b41e3f0ae8
2024-02-14 12:48:09 +05:30
John Fastabend
b0b1d6d133 UPSTREAM: net: tls, update curr on splice as well
commit c5a595000e2677e865a39f249c056bc05d6e55fd upstream.

The curr pointer must also be updated on the splice similar to how
we do this for other copy types.

Bug: 322282717
Fixes: d829e9c411 ("tls: convert to generic sk_msg interface")
Signed-off-by: John Fastabend <john.fastabend@gmail.com>
Reported-by: Jann Horn <jannh@google.com>
Link: https://lore.kernel.org/r/20231206232706.374377-2-john.fastabend@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit ba5efd8544fa62ae85daeb36077468bf2ce974ab)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: If942207e6338993096c9fbc8ce4c23a6bbecaf2e
2024-02-06 16:13:33 +00:00
Greg Kroah-Hartman
78f2cf25b1 Reapply "perf: Fix perf_event_validate_size()"
This reverts commit 8eb4011508 which is
commit 382c27f4ed28f803b1f1473ac2d8db0afc795a1b upstream.

Bug: 316932704
Change-Id: I69bfbf5180f57592ce285ea14f6f7b7c1b2b0f8f
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2024-02-02 03:32:37 +00:00
Matthew Wilcox (Oracle)
087b47920c UPSTREAM: ida: Fix crash in ida_free when the bitmap is empty
[ Upstream commit af73483f4e8b6f5c68c9aa63257bdd929a9c194a ]

The IDA usually detects double-frees, but that detection failed to
consider the case when there are no nearby IDs allocated and so we have a
NULL bitmap rather than simply having a clear bit.  Add some tests to the
test-suite to be sure we don't inadvertently reintroduce this problem.
Unfortunately they're quite noisy so include a message to disregard
the warnings.

Bug: 321878978
Reported-by: Zhenghan Wang <wzhmmmmm@gmail.com>
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 5dbcdaf4dbfe074e9142991c5c28eef789c1f6c6)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I4919e5c64af12f86fe1a91e1e9224a58eedbf345
2024-02-01 11:03:13 +00:00
Phil Sutter
73bfa95eeb UPSTREAM: netfilter: nf_tables: Reject tables of unsupported family
commit f1082dd31fe461d482d69da2a8eccfeb7bf07ac2 upstream.

An nftables family is merely a hollow container, its family just a
number and such not reliant on compile-time options other than nftables
support itself. Add an artificial check so attempts at using a family
the kernel can't support fail as early as possible. This helps user
space detect kernels which lack e.g. NFPROTO_INET.

Bug: 321815738
Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 25d1e7be85cf0a5afca5555f90e4609c40480ece)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I45b5c6f046e9156edf4c60bf5611367fe25f8ec9
2024-02-01 10:59:53 +00:00
Greg Kroah-Hartman
a34cc1dcf7 Reapply "perf: Disallow mis-matched inherited group reads"
This reverts commit 4934e8f7a8.

Keeps the ABI stable by taking advantage of a hole in the structure!

Bug: 307236803
Change-Id: Ic5f7ebeb3a9b13afdb3bfff7e54c4a93b863dab6
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2024-01-31 15:17:06 +00:00
Douglas Anderson
aea710204a UPSTREAM: ath10k: Get rid of "per_ce_irq" hw param
[ Upstream commit 7f86551665121931ecd6d327e019e7a69782bfcd ]

As of the patch ("ath10k: Keep track of which interrupts fired, don't
poll them") we now have no users of this hardware parameter.  Remove
it.

Suggested-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200709082024.v2.2.I083faa4e62e69f863311c89ae5eb28ec5a229b70@changeid
Stable-dep-of: 170c75d43a77 ("ath10k: Don't touch the CE interrupt registers after power up")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 146449535
Change-Id: I221d9cc30d009c3bc87a7943f8e3da1931984e1e
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
(cherry picked from android11-5.4-lts commit c2d9b43855)
2024-01-30 21:34:08 +05:30
Douglas Anderson
89945968f1 UPSTREAM: ath10k: Keep track of which interrupts fired, don't poll them
[ Upstream commit d66d24ac300cf41c6b88367fc9b4b6348679273d ]

If we have a per CE (Copy Engine) IRQ then we have no summary
register.  Right now the code generates a summary register by
iterating over all copy engines and seeing if they have an interrupt
pending.

This has a problem.  Specifically if _none_ if the Copy Engines have
an interrupt pending then they might go into low power mode and
reading from their address space will cause a full system crash.  This
was seen to happen when two interrupts went off at nearly the same
time.  Both were handled by a single call of ath10k_snoc_napi_poll()
but, because there were two interrupts handled and thus two calls to
napi_schedule() there was still a second call to
ath10k_snoc_napi_poll() which ran with no interrupts pending.

Instead of iterating over all the copy engines, let's just keep track
of the IRQs that fire.  Then we can effectively generate our own
summary without ever needing to read the Copy Engines.

Tested-on: WCN3990 SNOC WLAN.HL.3.2.2-00490-QCAHLSWMTPL-1

Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Rakesh Pillai <pillair@codeaurora.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200709082024.v2.1.I4d2f85ffa06f38532631e864a3125691ef5ffe06@changeid
Stable-dep-of: 170c75d43a77 ("ath10k: Don't touch the CE interrupt registers after power up")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 146449535
Change-Id: I3dbc75664ccbf4e8a1da60e42e84056551b10524
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
(cherry picked from android11-5.4-lts commit d15f869cb3)
2024-01-30 21:33:52 +05:30
Rakesh Pillai
d9f1b99f4c UPSTREAM: ath10k: Add interrupt summary based CE processing
[ Upstream commit b92aba35d39d10d8a6bdf2495172fd490c598b4a ]

Currently the NAPI processing loops through all
the copy engines and processes a particular copy
engine is the copy completion is set for that copy
engine. The host driver is not supposed to access
any copy engine register after clearing the interrupt
status register.

This might result in kernel crash like the one below
[ 1159.220143] Call trace:
[ 1159.220170]  ath10k_snoc_read32+0x20/0x40 [ath10k_snoc]
[ 1159.220193]  ath10k_ce_per_engine_service_any+0x78/0x130 [ath10k_core]
[ 1159.220203]  ath10k_snoc_napi_poll+0x38/0x8c [ath10k_snoc]
[ 1159.220270]  net_rx_action+0x100/0x3b0
[ 1159.220312]  __do_softirq+0x164/0x30c
[ 1159.220345]  run_ksoftirqd+0x2c/0x64
[ 1159.220380]  smpboot_thread_fn+0x1b0/0x288
[ 1159.220405]  kthread+0x11c/0x12c
[ 1159.220423]  ret_from_fork+0x10/0x18

To avoid such a scenario, we generate an interrupt
summary by reading the copy completion for all the
copy engine before actually processing any of them.
This will avoid reading the interrupt status register
for any CE after the interrupt status is cleared.

Tested-on: WCN3990 hw1.0 SNOC WLAN.HL.3.1-01040-QCAHLSWMTPLZ-1

Signed-off-by: Rakesh Pillai <pillair@codeaurora.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1593193967-29897-1-git-send-email-pillair@codeaurora.org
Stable-dep-of: 170c75d43a77 ("ath10k: Don't touch the CE interrupt registers after power up")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 146449535
Change-Id: I3d85ff89b889eac117c6f14c77b8aae1d5b3d236
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
(cherry picked from android11-5.4-lts commit 696b992edc)
2024-01-30 21:33:36 +05:30
Douglas Anderson
0226ac138f UPSTREAM: ath10k: Wait until copy complete is actually done before completing
[ Upstream commit 8f9ed93d09a97444733d492a3bbf66bcb786a777 ]

On wcn3990 we have "per_ce_irq = true".  That makes the
ath10k_ce_interrupt_summary() function always return 0xfff. The
ath10k_ce_per_engine_service_any() function will see this and think
that _all_ copy engines have an interrupt.  Without checking, the
ath10k_ce_per_engine_service() assumes that if it's called that the
"copy complete" (cc) interrupt fired.  This combination seems bad.

Let's add a check to make sure that the "copy complete" interrupt
actually fired in ath10k_ce_per_engine_service().

This might fix a hard-to-reproduce failure where it appears that the
copy complete handlers run before the copy is really complete.
Specifically a symptom was that we were seeing this on a Qualcomm
sc7180 board:
  arm-smmu 15000000.iommu: Unhandled context fault:
  fsr=0x402, iova=0x7fdd45780, fsynr=0x30003, cbfrsynra=0xc1, cb=10

Even on platforms that don't have wcn3990 this still seems like it
would be a sane thing to do.  Specifically the current IRQ handler
comments indicate that there might be other misc interrupt sources
firing that need to be cleared.  If one of those sources was the one
that caused the IRQ handler to be called it would also be important to
double-check that the interrupt we cared about actually fired.

Tested-on: WCN3990 SNOC WLAN.HL.3.2.2-00490-QCAHLSWMTPL-1

Signed-off-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200609082015.1.Ife398994e5a0a6830e4d4a16306ef36e0144e7ba@changeid
Stable-dep-of: 170c75d43a77 ("ath10k: Don't touch the CE interrupt registers after power up")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 146449535
Change-Id: I2ed2f1f7b97a27c741341bc6044450b68234114e
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
(cherry picked from android11-5.4-lts commit 366df9ecbc)
2024-01-30 21:33:20 +05:30
Amit Pundir
a7a2a20fff FROMGIT: clk: qcom: gcc-sdm845: Add soft dependency on rpmhpd
With the addition of RPMh power domain to the GCC node in
device tree, we noticed a significant delay in getting the
UFS driver probed on AOSP which futher led to mount failures
because Android do not support rootwait. So adding a soft
dependency on RPMh power domain which informs modprobe to
load rpmhpd module before gcc-sdm845.

Cc: <stable@vger.kernel.org> # v5.4+
Fixes: 4b6ea15c0a11 ("arm64: dts: qcom: sdm845: Add missing RPMh power domain to GCC")
Suggested-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20240123062814.2555649-1-amit.pundir@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

Bug: 146449535
(cherry picked from commit 1d9054e3a4fd36e2949e616f7360bdb81bcc1921
https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git/commit/?h=for-next)
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: I93c875d3d6acc8c2c2bf9f238a72733861f87869
(cherry picked from android11-5.4-lts commit b70f9975af)
2024-01-30 21:33:05 +05:30
Amit Pundir
b70f9975af FROMGIT: clk: qcom: gcc-sdm845: Add soft dependency on rpmhpd
With the addition of RPMh power domain to the GCC node in
device tree, we noticed a significant delay in getting the
UFS driver probed on AOSP which futher led to mount failures
because Android do not support rootwait. So adding a soft
dependency on RPMh power domain which informs modprobe to
load rpmhpd module before gcc-sdm845.

Cc: <stable@vger.kernel.org> # v5.4+
Fixes: 4b6ea15c0a11 ("arm64: dts: qcom: sdm845: Add missing RPMh power domain to GCC")
Suggested-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20240123062814.2555649-1-amit.pundir@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

Bug: 146449535
(cherry picked from commit 1d9054e3a4fd36e2949e616f7360bdb81bcc1921
https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git/commit/?h=for-next)
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: I93c875d3d6acc8c2c2bf9f238a72733861f87869
2024-01-29 06:08:00 +00:00
Greg Kroah-Hartman
74299cb130 This is the 5.4.268 stable release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmWy4hYACgkQONu9yGCS
 aT7SVBAAyx1DlSyJWcqzpESH0+VfqyWHxXlKS6Ip5wT0/+t0gglIKkwU/O0FsRXw
 pLO24wL0+MuIzgfZZj7wieAOPlGLOonKAvvUHGEMlpfAzyKjmZuW93WLKQlA/Oec
 uaT2ooQevRQcgXzbuV1yN/CeCnhbtmiQdcwy6OU5QACfzguQYtDbNGpbVHJEyEIW
 khlr+tj1KgRMzh/Sx76RPg4C/hkZBHun3tPcE0lTg+5QZDSkUj5gEdhVOSG2qmSh
 Lj9zt/isY3v6Whixel9YoTLr9SukI7ZlKzMrH1kSbGtTW3uZqgqB+7wCi1tWoNE1
 Zwu9/kUe1dU1kfwYW8AA5OwupjBjADVnZZx1cKN3nQZG2J8bSKHwHmuZPx3DGhJ1
 sxlaQ0nGvcEbCKljlIqsHzx2U22YKk939mVz5Y+MZYT5uwWRHI+iH4yRW97putSP
 t8tb3uX69Gsl6B+gLu38Mr7kkwyY06xmMnc5dfNCPwh8SxLj3dG7Gft90CNq1JKT
 q2cwlMEcDZRlC08kwzD7pRehZ6hYLRlTOv8yhQsQefcfzrtsT18Cec5TI2k72NOe
 fbIY8us3Qsr8JVSYuObGqT8LmkX9pkmRozEXgENvwltijEsWULoO2Hs+Z/yD07z8
 RYqtxWxVxFVeHTkrXbbMUTZWhFx5LE+rtxCySpfeFkv0WgRRwa8=
 =vkKq
 -----END PGP SIGNATURE-----

Merge 5.4.268 into android11-5.4-lts

Changes in 5.4.268
	f2fs: explicitly null-terminate the xattr list
	pinctrl: lochnagar: Don't build on MIPS
	ALSA: hda - Fix speaker and headset mic pin config for CHUWI CoreBook XPro
	ASoC: Intel: Skylake: Fix mem leak in few functions
	ASoC: nau8822: Fix incorrect type in assignment and cast to restricted __be16
	ASoC: Intel: Skylake: mem leak in skl register function
	ASoC: cs43130: Fix the position of const qualifier
	ASoC: cs43130: Fix incorrect frame delay configuration
	ASoC: rt5650: add mutex to avoid the jack detection failure
	nouveau/tu102: flush all pdbs on vmm flush
	net/tg3: fix race condition in tg3_reset_task()
	ASoC: da7219: Support low DC impedance headset
	nvme: introduce helper function to get ctrl state
	drm/exynos: fix a potential error pointer dereference
	drm/exynos: fix a wrong error checking
	clk: rockchip: rk3128: Fix HCLK_OTG gate register
	jbd2: correct the printing of write_flags in jbd2_write_superblock()
	drm/crtc: Fix uninit-value bug in drm_mode_setcrtc
	neighbour: Don't let neigh_forced_gc() disable preemption for long
	tracing: Have large events show up as '[LINE TOO BIG]' instead of nothing
	tracing: Add size check when printing trace_marker output
	ring-buffer: Do not record in NMI if the arch does not support cmpxchg in NMI
	reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning
	Input: atkbd - skip ATKBD_CMD_GETID in translated mode
	Input: i8042 - add nomux quirk for Acer P459-G2-M
	s390/scm: fix virtual vs physical address confusion
	ARC: fix spare error
	Input: xpad - add Razer Wolverine V2 support
	ida: Fix crash in ida_free when the bitmap is empty
	ARM: sun9i: smp: fix return code check of of_property_match_string
	drm/crtc: fix uninitialized variable use
	ACPI: resource: Add another DMI match for the TongFang GMxXGxx
	binder: use EPOLLERR from eventpoll.h
	binder: fix trivial typo of binder_free_buf_locked()
	binder: fix comment on binder_alloc_new_buf() return value
	uio: Fix use-after-free in uio_open
	parport: parport_serial: Add Brainboxes BAR details
	parport: parport_serial: Add Brainboxes device IDs and geometry
	coresight: etm4x: Fix width of CCITMIN field
	x86/lib: Fix overflow when counting digits
	EDAC/thunderx: Fix possible out-of-bounds string access
	powerpc: add crtsavres.o to always-y instead of extra-y
	powerpc/44x: select I2C for CURRITUCK
	powerpc/pseries/memhotplug: Quieten some DLPAR operations
	powerpc/pseries/memhp: Fix access beyond end of drmem array
	selftests/powerpc: Fix error handling in FPU/VMX preemption tests
	powerpc/powernv: Add a null pointer check to scom_debug_init_one()
	powerpc/powernv: Add a null pointer check in opal_event_init()
	powerpc/powernv: Add a null pointer check in opal_powercap_init()
	powerpc/imc-pmu: Add a null pointer check in update_events_in_group()
	mtd: rawnand: Increment IFC_TIMEOUT_MSECS for nand controller response
	ACPI: video: check for error while searching for backlight device parent
	ACPI: LPIT: Avoid u32 multiplication overflow
	net: netlabel: Fix kerneldoc warnings
	netlabel: remove unused parameter in netlbl_netlink_auditinfo()
	calipso: fix memory leak in netlbl_calipso_add_pass()
	spi: sh-msiof: Enforce fixed DTDL for R-Car H3
	mtd: Fix gluebi NULL pointer dereference caused by ftl notifier
	selinux: Fix error priority for bind with AF_UNSPEC on PF_INET6 socket
	crypto: virtio - Handle dataq logic with tasklet
	crypto: virtio - don't use 'default m'
	virtio_crypto: Introduce VIRTIO_CRYPTO_NOSPC
	crypto: ccp - fix memleak in ccp_init_dm_workarea
	crypto: af_alg - Disallow multiple in-flight AIO requests
	crypto: sahara - remove FLAGS_NEW_KEY logic
	crypto: sahara - fix ahash selftest failure
	crypto: sahara - fix processing requests with cryptlen < sg->length
	crypto: sahara - fix error handling in sahara_hw_descriptor_create()
	pstore: ram_core: fix possible overflow in persistent_ram_init_ecc()
	gfs2: Fix kernel NULL pointer dereference in gfs2_rgrp_dump
	crypto: virtio - Wait for tasklet to complete on device remove
	crypto: sahara - fix ahash reqsize
	crypto: sahara - fix wait_for_completion_timeout() error handling
	crypto: sahara - improve error handling in sahara_sha_process()
	crypto: sahara - fix processing hash requests with req->nbytes < sg->length
	crypto: sahara - do not resize req->src when doing hash operations
	crypto: scomp - fix req->dst buffer overflow
	blocklayoutdriver: Fix reference leak of pnfs_device_node
	NFSv4.1/pnfs: Ensure we handle the error NFS4ERR_RETURNCONFLICT
	wifi: rtw88: fix RX filter in FIF_ALLMULTI flag
	bpf, lpm: Fix check prefixlen before walking trie
	wifi: libertas: stop selecting wext
	ARM: dts: qcom: apq8064: correct XOADC register address
	ncsi: internal.h: Fix a spello
	net/ncsi: Fix netlink major/minor version numbers
	firmware: ti_sci: Fix an off-by-one in ti_sci_debugfs_create()
	rtlwifi: Use ffs in <foo>_phy_calculate_bit_shift
	wifi: rtlwifi: rtl8821ae: phy: fix an undefined bitwise shift behavior
	scsi: fnic: Return error if vmalloc() failed
	arm64: dts: qcom: sdm845-db845c: correct LED panic indicator
	scsi: hisi_sas: Replace with standard error code return value
	selftests/net: fix grep checking for fib_nexthop_multiprefix
	virtio/vsock: fix logic which reduces credit update messages
	dma-mapping: clear dev->dma_mem to NULL after freeing it
	wifi: rtlwifi: add calculate_bit_shift()
	wifi: rtlwifi: rtl8188ee: phy: using calculate_bit_shift()
	wifi: rtlwifi: rtl8192c: using calculate_bit_shift()
	wifi: rtlwifi: rtl8192cu: using calculate_bit_shift()
	wifi: rtlwifi: rtl8192ce: using calculate_bit_shift()
	rtlwifi: rtl8192de: make arrays static const, makes object smaller
	wifi: rtlwifi: rtl8192de: using calculate_bit_shift()
	wifi: rtlwifi: rtl8192ee: using calculate_bit_shift()
	wifi: rtlwifi: rtl8192se: using calculate_bit_shift()
	netfilter: nf_tables: mark newset as dead on transaction abort
	Bluetooth: Fix bogus check for re-auth no supported with non-ssp
	Bluetooth: btmtkuart: fix recv_buf() return value
	ip6_tunnel: fix NEXTHDR_FRAGMENT handling in ip6_tnl_parse_tlv_enc_lim()
	ARM: davinci: always select CONFIG_CPU_ARM926T
	RDMA/usnic: Silence uninitialized symbol smatch warnings
	media: pvrusb2: fix use after free on context disconnection
	drm/bridge: Fix typo in post_disable() description
	f2fs: fix to avoid dirent corruption
	drm/radeon/r600_cs: Fix possible int overflows in r600_cs_check_reg()
	drm/radeon/r100: Fix integer overflow issues in r100_cs_track_check()
	drm/radeon: check return value of radeon_ring_lock()
	ASoC: cs35l33: Fix GPIO name and drop legacy include
	ASoC: cs35l34: Fix GPIO name and drop legacy include
	drm/msm/mdp4: flush vblank event on disable
	drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks
	drm/drv: propagate errors from drm_modeset_register_all()
	drm/radeon: check the alloc_workqueue return value in radeon_crtc_init()
	drm/radeon/dpm: fix a memleak in sumo_parse_power_table
	drm/radeon/trinity_dpm: fix a memleak in trinity_parse_power_table
	drm/bridge: tc358767: Fix return value on error case
	media: cx231xx: fix a memleak in cx231xx_init_isoc
	media: dvbdev: drop refcount on error path in dvb_device_open()
	drm/amdgpu/debugfs: fix error code when smc register accessors are NULL
	drm/amd/pm: fix a double-free in si_dpm_init
	drivers/amd/pm: fix a use-after-free in kv_parse_power_table
	gpu/drm/radeon: fix two memleaks in radeon_vm_init
	drivers: clk: zynqmp: calculate closest mux rate
	watchdog: set cdev owner before adding
	watchdog/hpwdt: Only claim UNKNOWN NMI if from iLO
	watchdog: bcm2835_wdt: Fix WDIOC_SETTIMEOUT handling
	clk: si5341: fix an error code problem in si5341_output_clk_set_rate
	mmc: sdhci_omap: Fix TI SoC dependencies
	of: Fix double free in of_parse_phandle_with_args_map
	of: unittest: Fix of_count_phandle_with_args() expected value message
	binder: fix async space check for 0-sized buffers
	binder: fix use-after-free in shinker's callback
	Input: atkbd - use ab83 as id when skipping the getid command
	Revert "ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek"
	xen-netback: don't produce zero-size SKB frags
	binder: fix race between mmput() and do_exit()
	binder: fix unused alloc->free_async_space
	tick-sched: Fix idle and iowait sleeptime accounting vs CPU hotplug
	usb: phy: mxs: remove CONFIG_USB_OTG condition for mxs_phy_is_otg_host()
	usb: dwc: ep0: Update request status in dwc3_ep0_stall_restart
	Revert "usb: dwc3: Soft reset phy on probe for host"
	Revert "usb: dwc3: don't reset device side if dwc3 was configured as host-only"
	usb: chipidea: wait controller resume finished for wakeup irq
	Revert "usb: typec: class: fix typec_altmode_put_partner to put plugs"
	usb: typec: class: fix typec_altmode_put_partner to put plugs
	usb: mon: Fix atomicity violation in mon_bin_vma_fault
	ALSA: oxygen: Fix right channel of capture volume mixer
	fbdev: flush deferred work in fb_deferred_io_fsync()
	rootfs: Fix support for rootfstype= when root= is given
	wifi: rtlwifi: Remove bogus and dangerous ASPM disable/enable code
	wifi: rtlwifi: Convert LNKCTL change to PCIe cap RMW accessors
	wifi: mwifiex: configure BSSID consistently when starting AP
	x86/kvm: Do not try to disable kvmclock if it was not enabled
	HID: wacom: Correct behavior when processing some confidence == false touches
	mips: Fix incorrect max_low_pfn adjustment
	MIPS: Alchemy: Fix an out-of-bound access in db1200_dev_setup()
	MIPS: Alchemy: Fix an out-of-bound access in db1550_dev_setup()
	serial: 8250: omap: Don't skip resource freeing if pm_runtime_resume_and_get() failed
	acpi: property: Let args be NULL in __acpi_node_get_property_reference
	software node: Let args be NULL in software_node_get_reference_args
	perf genelf: Set ELF program header addresses properly
	nvmet-tcp: Fix a kernel panic when host sends an invalid H2C PDU length
	nvmet-tcp: fix a crash in nvmet_req_complete()
	perf env: Add perf_env__numa_node()
	perf record: Move sb_evlist to 'struct record'
	perf top: Move sb_evlist to 'struct perf_top'
	perf bpf: Decouple creating the evlist from adding the SB event
	perf env: Avoid recursively taking env->bpf_progs.lock
	apparmor: avoid crash when parsed profile name is empty
	serial: imx: Correct clock error message in function probe()
	nvmet-tcp: Fix the H2C expected PDU len calculation
	PCI: keystone: Fix race condition when initializing PHYs
	s390/pci: fix max size calculation in zpci_memcpy_toio()
	net: qualcomm: rmnet: fix global oob in rmnet_policy
	net: phy: micrel: populate .soft_reset for KSZ9131
	net: ravb: Fix dma_addr_t truncation in error case
	net: dsa: vsc73xx: Add null pointer check to vsc73xx_gpio_probe
	netfilter: nf_tables: skip dead set elements in netlink dump
	ipvs: avoid stat macros calls from preemptible context
	kdb: Censor attempts to set PROMPT without ENABLE_MEM_READ
	kdb: Fix a potential buffer overflow in kdb_local()
	mlxsw: spectrum_acl_erp: Fix error flow of pool allocation failure
	i2c: s3c24xx: fix read transfers in polling mode
	i2c: s3c24xx: fix transferring more than one message in polling mode
	perf top: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set
	arm64: dts: armada-3720-turris-mox: set irq type for RTC
	Linux 5.4.268

Change-Id: I347fc44c3a9947e2b7cb476d622adca58677f78a
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2024-01-26 02:15:05 +00:00
Greg Kroah-Hartman
f0602893f4 Linux 5.4.268
Link: https://lore.kernel.org/r/20240122235719.206965081@linuxfoundation.org
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
Link: https://lore.kernel.org/r/20240123174434.819712739@linuxfoundation.org
Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: kernelci.org bot <bot@kernelci.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-01-25 14:34:33 -08:00
Sjoerd Simons
5ff9836ab0 arm64: dts: armada-3720-turris-mox: set irq type for RTC
commit fca8a117c1c9a0f8b8feed117db34cf58134dc2c upstream.

The rtc on the mox shares its interrupt line with the moxtet bus. Set
the interrupt type to be consistent between both devices. This ensures
correct setup of the interrupt line regardless of probing order.

Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
Cc: <stable@vger.kernel.org> # v6.2+
Fixes: 21aad8ba615e ("arm64: dts: armada-3720-turris-mox: Add missing interrupt for RTC")
Reviewed-by: Marek Behún <kabel@kernel.org>
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-01-25 14:34:33 -08:00
Tiezhu Yang
300a55a3a6 perf top: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set
commit 0c5f1acc2a14416bf30023f373558d369afdbfc8 upstream.

When I execute 'perf top' without HAVE_LIBBPF_SUPPORT, there exists the
following segmentation fault, skip the side-band event setup to fix it,
this is similar with commit 1101c872c8c7 ("perf record: Skip side-band
event setup if HAVE_LIBBPF_SUPPORT is not set").

  [yangtiezhu@linux perf]$ ./perf top
  <SNIP>
  perf: Segmentation fault
  Obtained 6 stack frames.
  ./perf(sighandler_dump_stack+0x5c) [0x12011b604]
  [0xffffffc010]
  ./perf(perf_mmap__read_init+0x3e) [0x1201feeae]
  ./perf() [0x1200d715c]
  /lib64/libpthread.so.0(+0xab9c) [0xffee10ab9c]
  /lib64/libc.so.6(+0x128f4c) [0xffedc08f4c]
  Segmentation fault
  [yangtiezhu@linux perf]$

I use git bisect to find commit b38d85ef49cf ("perf bpf: Decouple
creating the evlist from adding the SB event") is the first bad commit,
so also add the Fixes tag.

Committer testing:

First build perf explicitely disabling libbpf:

  $ make NO_LIBBPF=1 O=/tmp/build/perf -C tools/perf install-bin && perf test python

Now make sure it isn't linked:

  $ perf -vv | grep -w bpf
                   bpf: [ OFF ]  # HAVE_LIBBPF_SUPPORT
  $
  $ nm ~/bin/perf | grep libbpf
  $

And now try to run 'perf top':

  # perf top
  perf: Segmentation fault
  -------- backtrace --------
  perf[0x5bcd6d]
  /lib64/libc.so.6(+0x3ca6f)[0x7fd0f5a66a6f]
  perf(perf_mmap__read_init+0x1e)[0x5e1afe]
  perf[0x4cc468]
  /lib64/libpthread.so.0(+0x9431)[0x7fd0f645a431]
  /lib64/libc.so.6(clone+0x42)[0x7fd0f5b2b912]
  #

Applying this patch fixes the issue.

Fixes: b38d85ef49cf ("perf bpf: Decouple creating the evlist from adding the SB event")
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Xuefeng Li <lixuefeng@loongson.cn>
Link: http://lore.kernel.org/lkml/1597753837-16222-1-git-send-email-yangtiezhu@loongson.cn
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-01-25 14:34:33 -08:00
Marek Szyprowski
ea5587946a i2c: s3c24xx: fix transferring more than one message in polling mode
[ Upstream commit 990489e1042c6c5d6bccf56deca68f8dbeed8180 ]

To properly handle ACK on the bus when transferring more than one
message in polling mode, move the polling handling loop from
s3c24xx_i2c_message_start() to s3c24xx_i2c_doxfer(). This way
i2c_s3c_irq_nextbyte() is always executed till the end, properly
acknowledging the IRQ bits and no recursive calls to
i2c_s3c_irq_nextbyte() are made.

While touching this, also fix finishing transfers in polling mode by
using common code path and always waiting for the bus to become idle
and disabled.

Fixes: 117053f77a ("i2c: s3c2410: Add polling mode support")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Marek Szyprowski
90734f1cde i2c: s3c24xx: fix read transfers in polling mode
[ Upstream commit 0d9cf23ed55d7ba3ab26d617a3ae507863674c8f ]

To properly handle read transfers in polling mode, no waiting for the ACK
state is needed as it will never come. Just wait a bit to ensure start
state is on the bus and continue processing next bytes.

Fixes: 117053f77a ("i2c: s3c2410: Add polling mode support")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Chanho Park <chanho61.park@samsung.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Amit Cohen
05b6d0234a mlxsw: spectrum_acl_erp: Fix error flow of pool allocation failure
[ Upstream commit 6d6eeabcfaba2fcadf5443b575789ea606f9de83 ]

Lately, a bug was found when many TC filters are added - at some point,
several bugs are printed to dmesg [1] and the switch is crashed with
segmentation fault.

The issue starts when gen_pool_free() fails because of unexpected
behavior - a try to free memory which is already freed, this leads to BUG()
call which crashes the switch and makes many other bugs.

Trying to track down the unexpected behavior led to a bug in eRP code. The
function mlxsw_sp_acl_erp_table_alloc() gets a pointer to the allocated
index, sets the value and returns an error code. When gen_pool_alloc()
fails it returns address 0, we track it and return -ENOBUFS outside, BUT
the call for gen_pool_alloc() already override the index in erp_table
structure. This is a problem when such allocation is done as part of
table expansion. This is not a new table, which will not be used in case
of allocation failure. We try to expand eRP table and override the
current index (non-zero) with zero. Then, it leads to an unexpected
behavior when address 0 is freed twice. Note that address 0 is valid in
erp_table->base_index and indeed other tables use it.

gen_pool_alloc() fails in case that there is no space left in the
pre-allocated pool, in our case, the pool is limited to
ACL_MAX_ERPT_BANK_SIZE, which is read from hardware. When more than max
erp entries are required, we exceed the limit and return an error, this
error leads to "Failed to migrate vregion" print.

Fix this by changing erp_table->base_index only in case of a successful
allocation.

Add a test case for such a scenario. Without this fix it causes
segmentation fault:

$ TESTS="max_erp_entries_test" ./tc_flower.sh
./tc_flower.sh: line 988:  1560 Segmentation fault      tc filter del dev $h2 ingress chain $i protocol ip pref $i handle $j flower &>/dev/null

[1]:
kernel BUG at lib/genalloc.c:508!
invalid opcode: 0000 [#1] PREEMPT SMP
CPU: 6 PID: 3531 Comm: tc Not tainted 6.7.0-rc5-custom-ga6893f479f5e #1
Hardware name: Mellanox Technologies Ltd. MSN4700/VMOD0010, BIOS 5.11 07/12/2021
RIP: 0010:gen_pool_free_owner+0xc9/0xe0
...
Call Trace:
 <TASK>
 __mlxsw_sp_acl_erp_table_other_dec+0x70/0xa0 [mlxsw_spectrum]
 mlxsw_sp_acl_erp_mask_destroy+0xf5/0x110 [mlxsw_spectrum]
 objagg_obj_root_destroy+0x18/0x80 [objagg]
 objagg_obj_destroy+0x12c/0x130 [objagg]
 mlxsw_sp_acl_erp_mask_put+0x37/0x50 [mlxsw_spectrum]
 mlxsw_sp_acl_ctcam_region_entry_remove+0x74/0xa0 [mlxsw_spectrum]
 mlxsw_sp_acl_ctcam_entry_del+0x1e/0x40 [mlxsw_spectrum]
 mlxsw_sp_acl_tcam_ventry_del+0x78/0xd0 [mlxsw_spectrum]
 mlxsw_sp_flower_destroy+0x4d/0x70 [mlxsw_spectrum]
 mlxsw_sp_flow_block_cb+0x73/0xb0 [mlxsw_spectrum]
 tc_setup_cb_destroy+0xc1/0x180
 fl_hw_destroy_filter+0x94/0xc0 [cls_flower]
 __fl_delete+0x1ac/0x1c0 [cls_flower]
 fl_destroy+0xc2/0x150 [cls_flower]
 tcf_proto_destroy+0x1a/0xa0
...
mlxsw_spectrum3 0000:07:00.0: Failed to migrate vregion
mlxsw_spectrum3 0000:07:00.0: Failed to migrate vregion

Fixes: f465261aa1 ("mlxsw: spectrum_acl: Implement common eRP core")
Signed-off-by: Amit Cohen <amcohen@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Link: https://lore.kernel.org/r/4cfca254dfc0e5d283974801a24371c7b6db5989.1705502064.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Christophe JAILLET
d5661f46c1 kdb: Fix a potential buffer overflow in kdb_local()
[ Upstream commit 4f41d30cd6dc865c3cbc1a852372321eba6d4e4c ]

When appending "[defcmd]" to 'kdb_prompt_str', the size of the string
already in the buffer should be taken into account.

An option could be to switch from strncat() to strlcat() which does the
correct test to avoid such an overflow.

However, this actually looks as dead code, because 'defcmd_in_progress'
can't be true here.
See a more detailed explanation at [1].

[1]: https://lore.kernel.org/all/CAD=FV=WSh7wKN7Yp-3wWiDgX4E3isQ8uh0LCzTmd1v9Cg9j+nQ@mail.gmail.com/

Fixes: 5d5314d679 ("kdb: core for kgdb back end (1 of 2)")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Daniel Thompson
cf6260a34d kdb: Censor attempts to set PROMPT without ENABLE_MEM_READ
[ Upstream commit ad99b5105c0823ff02126497f4366e6a8009453e ]

Currently the PROMPT variable could be abused to provoke the printf()
machinery to read outside the current stack frame. Normally this
doesn't matter becaues md is already a much better tool for reading
from memory.

However the md command can be disabled by not setting KDB_ENABLE_MEM_READ.
Let's also prevent PROMPT from being modified in these circumstances.

Whilst adding a comment to help future code reviewers we also remove
the #ifdef where PROMPT in consumed. There is no problem passing an
unused (0) to snprintf when !CONFIG_SMP.
argument

Reported-by: Wang Xiayang <xywang.sjtu@sjtu.edu.cn>
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Stable-dep-of: 4f41d30cd6dc ("kdb: Fix a potential buffer overflow in kdb_local()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Fedor Pchelkin
36b6db699c ipvs: avoid stat macros calls from preemptible context
[ Upstream commit d6938c1c76c64f42363d0d1f051e1b4641c2ad40 ]

Inside decrement_ttl() upon discovering that the packet ttl has exceeded,
__IP_INC_STATS and __IP6_INC_STATS macros can be called from preemptible
context having the following backtrace:

check_preemption_disabled: 48 callbacks suppressed
BUG: using __this_cpu_add() in preemptible [00000000] code: curl/1177
caller is decrement_ttl+0x217/0x830
CPU: 5 PID: 1177 Comm: curl Not tainted 6.7.0+ #34
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 04/01/2014
Call Trace:
 <TASK>
 dump_stack_lvl+0xbd/0xe0
 check_preemption_disabled+0xd1/0xe0
 decrement_ttl+0x217/0x830
 __ip_vs_get_out_rt+0x4e0/0x1ef0
 ip_vs_nat_xmit+0x205/0xcd0
 ip_vs_in_hook+0x9b1/0x26a0
 nf_hook_slow+0xc2/0x210
 nf_hook+0x1fb/0x770
 __ip_local_out+0x33b/0x640
 ip_local_out+0x2a/0x490
 __ip_queue_xmit+0x990/0x1d10
 __tcp_transmit_skb+0x288b/0x3d10
 tcp_connect+0x3466/0x5180
 tcp_v4_connect+0x1535/0x1bb0
 __inet_stream_connect+0x40d/0x1040
 inet_stream_connect+0x57/0xa0
 __sys_connect_file+0x162/0x1a0
 __sys_connect+0x137/0x160
 __x64_sys_connect+0x72/0xb0
 do_syscall_64+0x6f/0x140
 entry_SYSCALL_64_after_hwframe+0x6e/0x76
RIP: 0033:0x7fe6dbbc34e0

Use the corresponding preemption-aware variants: IP_INC_STATS and
IP6_INC_STATS.

Found by Linux Verification Center (linuxtesting.org).

Fixes: 8d8e20e2d7 ("ipvs: Decrement ttl")
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
Acked-by: Julian Anastasov <ja@ssi.bg>
Acked-by: Simon Horman <horms@kernel.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Pablo Neira Ayuso
4c8a827d68 netfilter: nf_tables: skip dead set elements in netlink dump
[ Upstream commit 6b1ca88e4bb63673dc9f9c7f23c899f22c3cb17a ]

Delete from packet path relies on the garbage collector to purge
elements with NFT_SET_ELEM_DEAD_BIT on.

Skip these dead elements from nf_tables_dump_setelem() path, I very
rarely see tests/shell/testcases/maps/typeof_maps_add_delete reports
[DUMP FAILED] showing a mismatch in the expected output with an element
that should not be there.

If the netlink dump happens before GC worker run, it might show dead
elements in the ruleset listing.

nft_rhash_get() already skips dead elements in nft_rhash_cmp(),
therefore, it already does not show the element when getting a single
element via netlink control plane.

Fixes: 5f68718b34a5 ("netfilter: nf_tables: GC transaction API to avoid race with control plane")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Kunwu Chan
db9fda526c net: dsa: vsc73xx: Add null pointer check to vsc73xx_gpio_probe
[ Upstream commit 776dac5a662774f07a876b650ba578d0a62d20db ]

devm_kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure.

Fixes: 05bd97fc55 ("net: dsa: Add Vitesse VSC73xx DSA router driver")
Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
Suggested-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20240111072018.75971-1-chentao@kylinos.cn
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Nikita Yushchenko
8efe3e8a6c net: ravb: Fix dma_addr_t truncation in error case
[ Upstream commit e327b2372bc0f18c30433ac40be07741b59231c5 ]

In ravb_start_xmit(), ravb driver uses u32 variable to store result of
dma_map_single() call. Since ravb hardware has 32-bit address fields in
descriptors, this works properly when mapping is successful - it is
platform's job to provide mapping addresses that fit into hardware
limitations.

However, in failure case dma_map_single() returns DMA_MAPPING_ERROR
constant that is 64-bit when dma_addr_t is 64-bit. Storing this constant
in u32 leads to truncation, and further call to dma_mapping_error()
fails to notice the error.

Fix that by storing result of dma_map_single() in a dma_addr_t
variable.

Fixes: c156633f13 ("Renesas Ethernet AVB driver proper")
Signed-off-by: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Claudiu Beznea
f7a153e3ac net: phy: micrel: populate .soft_reset for KSZ9131
[ Upstream commit e398822c4751017fe401f57409488f5948d12fb5 ]

The RZ/G3S SMARC Module has 2 KSZ9131 PHYs. In this setup, the KSZ9131 PHY
is used with the ravb Ethernet driver. It has been discovered that when
bringing the Ethernet interface down/up continuously, e.g., with the
following sh script:

$ while :; do ifconfig eth0 down; ifconfig eth0 up; done

the link speed and duplex are wrong after interrupting the bring down/up
operation even though the Ethernet interface is up. To recover from this
state the following configuration sequence is necessary (executed
manually):

$ ifconfig eth0 down
$ ifconfig eth0 up

The behavior has been identified also on the Microchip SAMA7G5-EK board
which runs the macb driver and uses the same PHY.

The order of PHY-related operations in ravb_open() is as follows:
ravb_open() ->
  ravb_phy_start() ->
    ravb_phy_init() ->
      of_phy_connect() ->
        phy_connect_direct() ->
	  phy_attach_direct() ->
	    phy_init_hw() ->
	      phydev->drv->soft_reset()
	      phydev->drv->config_init()
	      phydev->drv->config_intr()
	    phy_resume()
	      kszphy_resume()

The order of PHY-related operations in ravb_close is as follows:
ravb_close() ->
  phy_stop() ->
    phy_suspend() ->
      kszphy_suspend() ->
        genphy_suspend()
	  // set BMCR_PDOWN bit in MII_BMCR

In genphy_suspend() setting the BMCR_PDWN bit in MII_BMCR switches the PHY
to Software Power-Down (SPD) mode (according to the KSZ9131 datasheet).
Thus, when opening the interface after it has been  previously closed (via
ravb_close()), the phydev->drv->config_init() and
phydev->drv->config_intr() reach the KSZ9131 PHY driver via the
ksz9131_config_init() and kszphy_config_intr() functions.

KSZ9131 specifies that the MII management interface remains operational
during SPD (Software Power-Down), but (according to manual):
- Only access to the standard registers (0 through 31) is supported.
- Access to MMD address spaces other than MMD address space 1 is possible
  if the spd_clock_gate_override bit is set.
- Access to MMD address space 1 is not possible.

The spd_clock_gate_override bit is not used in the KSZ9131 driver.

ksz9131_config_init() configures RGMII delay, pad skews and LEDs by
accessesing MMD registers other than those in address space 1.

The datasheet for the KSZ9131 does not specify what happens if registers
from an unsupported address space are accessed while the PHY is in SPD.

To fix the issue the .soft_reset method has been instantiated for KSZ9131,
too. This resets the PHY to the default state before doing any
configurations to it, thus switching it out of SPD.

Fixes: bff5b4b373 ("net: phy: micrel: add Microchip KSZ9131 initial driver")
Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Lin Ma
02467ab8b4 net: qualcomm: rmnet: fix global oob in rmnet_policy
[ Upstream commit b33fb5b801c6db408b774a68e7c8722796b59ecc ]

The variable rmnet_link_ops assign a *bigger* maxtype which leads to a
global out-of-bounds read when parsing the netlink attributes. See bug
trace below:

==================================================================
BUG: KASAN: global-out-of-bounds in validate_nla lib/nlattr.c:386 [inline]
BUG: KASAN: global-out-of-bounds in __nla_validate_parse+0x24af/0x2750 lib/nlattr.c:600
Read of size 1 at addr ffffffff92c438d0 by task syz-executor.6/84207

CPU: 0 PID: 84207 Comm: syz-executor.6 Tainted: G                 N 6.1.0 #3
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x8b/0xb3 lib/dump_stack.c:106
 print_address_description mm/kasan/report.c:284 [inline]
 print_report+0x172/0x475 mm/kasan/report.c:395
 kasan_report+0xbb/0x1c0 mm/kasan/report.c:495
 validate_nla lib/nlattr.c:386 [inline]
 __nla_validate_parse+0x24af/0x2750 lib/nlattr.c:600
 __nla_parse+0x3e/0x50 lib/nlattr.c:697
 nla_parse_nested_deprecated include/net/netlink.h:1248 [inline]
 __rtnl_newlink+0x50a/0x1880 net/core/rtnetlink.c:3485
 rtnl_newlink+0x64/0xa0 net/core/rtnetlink.c:3594
 rtnetlink_rcv_msg+0x43c/0xd70 net/core/rtnetlink.c:6091
 netlink_rcv_skb+0x14f/0x410 net/netlink/af_netlink.c:2540
 netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
 netlink_unicast+0x54e/0x800 net/netlink/af_netlink.c:1345
 netlink_sendmsg+0x930/0xe50 net/netlink/af_netlink.c:1921
 sock_sendmsg_nosec net/socket.c:714 [inline]
 sock_sendmsg+0x154/0x190 net/socket.c:734
 ____sys_sendmsg+0x6df/0x840 net/socket.c:2482
 ___sys_sendmsg+0x110/0x1b0 net/socket.c:2536
 __sys_sendmsg+0xf3/0x1c0 net/socket.c:2565
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x3b/0x90 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7fdcf2072359
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 f1 19 00 00 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 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fdcf13e3168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 00007fdcf219ff80 RCX: 00007fdcf2072359
RDX: 0000000000000000 RSI: 0000000020000200 RDI: 0000000000000003
RBP: 00007fdcf20bd493 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007fffbb8d7bdf R14: 00007fdcf13e3300 R15: 0000000000022000
 </TASK>

The buggy address belongs to the variable:
 rmnet_policy+0x30/0xe0

The buggy address belongs to the physical page:
page:0000000065bdeb3c refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x155243
flags: 0x200000000001000(reserved|node=0|zone=2)
raw: 0200000000001000 ffffea00055490c8 ffffea00055490c8 0000000000000000
raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffffffff92c43780: f9 f9 f9 f9 00 00 00 02 f9 f9 f9 f9 00 00 00 07
 ffffffff92c43800: f9 f9 f9 f9 00 00 00 05 f9 f9 f9 f9 06 f9 f9 f9
>ffffffff92c43880: f9 f9 f9 f9 00 00 00 00 00 00 f9 f9 f9 f9 f9 f9
                                                 ^
 ffffffff92c43900: 00 00 00 00 00 00 00 00 07 f9 f9 f9 f9 f9 f9 f9
 ffffffff92c43980: 00 00 00 07 f9 f9 f9 f9 00 00 00 05 f9 f9 f9 f9

According to the comment of `nla_parse_nested_deprecated`, the maxtype
should be len(destination array) - 1. Hence use `IFLA_RMNET_MAX` here.

Fixes: 14452ca3b5 ("net: qualcomm: rmnet: Export mux_id and flags to netlink")
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Reviewed-by: Subash Abhinov Kasiviswanathan <quic_subashab@quicinc.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20240110061400.3356108-1-linma@zju.edu.cn
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Niklas Schnelle
5b58cfcd4c s390/pci: fix max size calculation in zpci_memcpy_toio()
[ Upstream commit 80df7d6af7f6d229b34cf237b2cc9024c07111cd ]

The zpci_get_max_write_size() helper is used to determine the maximum
size a PCI store or load can use at a given __iomem address.

For the PCI block store the following restrictions apply:

1. The dst + len must not cross a 4K boundary in the (pseudo-)MMIO space
2. len must not exceed ZPCI_MAX_WRITE_SIZE
3. len must be a multiple of 8 bytes
4. The src address must be double word (8 byte) aligned
5. The dst address must be double word (8 byte) aligned

Otherwise only a normal PCI store which takes its src value from
a register can be used. For these PCI store restriction 1 still applies.
Similarly 1 also applies to PCI loads.

It turns out zpci_max_write_size() instead implements stricter
conditions which prevents PCI block stores from being used where they
can and should be used. In particular instead of conditions 4 and 5 it
wrongly enforces both dst and src to be size aligned. This indirectly
covers condition 1 but also prevents many legal PCI block stores.

On top of the functional shortcomings the zpci_get_max_write_size() is
misnamed as it is used for both read and write size calculations. Rename
it to zpci_get_max_io_size() and implement the listed conditions
explicitly.

Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Fixes: cd24834130 ("s390/pci: base support")
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
[agordeev@linux.ibm.com replaced spaces with tabs]
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Siddharth Vadapalli
14a7e3a0d0 PCI: keystone: Fix race condition when initializing PHYs
[ Upstream commit c12ca110c613a81cb0f0099019c839d078cd0f38 ]

The PCI driver invokes the PHY APIs using the ks_pcie_enable_phy()
function. The PHY in this case is the Serdes. It is possible that the
PCI instance is configured for two lane operation across two different
Serdes instances, using one lane of each Serdes.

In such a configuration, if the reference clock for one Serdes is
provided by the other Serdes, it results in a race condition. After the
Serdes providing the reference clock is initialized by the PCI driver by
invoking its PHY APIs, it is not guaranteed that this Serdes remains
powered on long enough for the PHY APIs based initialization of the
dependent Serdes. In such cases, the PLL of the dependent Serdes fails
to lock due to the absence of the reference clock from the former Serdes
which has been powered off by the PM Core.

Fix this by obtaining reference to the PHYs before invoking the PHY
initialization APIs and releasing reference after the initialization is
complete.

Link: https://lore.kernel.org/linux-pci/20230927041845.1222080-1-s-vadapalli@ti.com
Fixes: 49229238ab ("PCI: keystone: Cleanup PHY handling")
Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Acked-by: Ravi Gunasekaran <r-gunasekaran@ti.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Maurizio Lombardi
40d171ef23 nvmet-tcp: Fix the H2C expected PDU len calculation
[ Upstream commit 9a1abc24850eb759e36a2f8869161c3b7254c904 ]

The nvmet_tcp_handle_h2c_data_pdu() function should take into
consideration the possibility that the header digest and/or the data
digests are enabled when calculating the expected PDU length, before
comparing it to the value stored in cmd->pdu_len.

Fixes: efa56305908b ("nvmet-tcp: Fix a kernel panic when host sends an invalid H2C PDU length")
Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:32 -08:00
Christoph Niedermaier
258dccd67b serial: imx: Correct clock error message in function probe()
[ Upstream commit 3e189470cad27d41a3a9dc02649f965b7ed1c90f ]

Correct the clock error message by changing the clock name.

Fixes: 1e512d4533 ("serial: imx: add error messages when .probe fails")
Signed-off-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Link: https://lore.kernel.org/r/20231224093209.2612-1-cniedermaier@dh-electronics.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:31 -08:00
Fedor Pchelkin
1d8e62b556 apparmor: avoid crash when parsed profile name is empty
[ Upstream commit 55a8210c9e7d21ff2644809699765796d4bfb200 ]

When processing a packed profile in unpack_profile() described like

 "profile :ns::samba-dcerpcd /usr/lib*/samba/{,samba/}samba-dcerpcd {...}"

a string ":samba-dcerpcd" is unpacked as a fully-qualified name and then
passed to aa_splitn_fqname().

aa_splitn_fqname() treats ":samba-dcerpcd" as only containing a namespace.
Thus it returns NULL for tmpname, meanwhile tmpns is non-NULL. Later
aa_alloc_profile() crashes as the new profile name is NULL now.

general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN NOPTI
KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
CPU: 6 PID: 1657 Comm: apparmor_parser Not tainted 6.7.0-rc2-dirty #16
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-3-gd478f380-rebuilt.opensuse.org 04/01/2014
RIP: 0010:strlen+0x1e/0xa0
Call Trace:
 <TASK>
 ? strlen+0x1e/0xa0
 aa_policy_init+0x1bb/0x230
 aa_alloc_profile+0xb1/0x480
 unpack_profile+0x3bc/0x4960
 aa_unpack+0x309/0x15e0
 aa_replace_profiles+0x213/0x33c0
 policy_update+0x261/0x370
 profile_replace+0x20e/0x2a0
 vfs_write+0x2af/0xe00
 ksys_write+0x126/0x250
 do_syscall_64+0x46/0xf0
 entry_SYSCALL_64_after_hwframe+0x6e/0x76
 </TASK>
---[ end trace 0000000000000000 ]---
RIP: 0010:strlen+0x1e/0xa0

It seems such behaviour of aa_splitn_fqname() is expected and checked in
other places where it is called (e.g. aa_remove_profiles). Well, there
is an explicit comment "a ns name without a following profile is allowed"
inside.

AFAICS, nothing can prevent unpacked "name" to be in form like
":samba-dcerpcd" - it is passed from userspace.

Deny the whole profile set replacement in such case and inform user with
EPROTO and an explaining message.

Found by Linux Verification Center (linuxtesting.org).

Fixes: 04dc715e24 ("apparmor: audit policy ns specified in policy load")
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
Signed-off-by: John Johansen <john.johansen@canonical.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:31 -08:00
Ian Rogers
4cd5db4fc4 perf env: Avoid recursively taking env->bpf_progs.lock
[ Upstream commit 9c51f8788b5d4e9f46afbcf563255cfd355690b3 ]

Add variants of perf_env__insert_bpf_prog_info(), perf_env__insert_btf()
and perf_env__find_btf prefixed with __ to indicate the
env->bpf_progs.lock is assumed held.

Call these variants when the lock is held to avoid recursively taking it
and potentially having a thread deadlock with itself.

Fixes: f8dfeae009 ("perf bpf: Show more BPF program info in print_bpf_prog_info()")
Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Song Liu <song@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Huacai Chen <chenhuacai@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: K Prateek Nayak <kprateek.nayak@amd.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Ming Wang <wangming01@loongson.cn>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ravi Bangoria <ravi.bangoria@amd.com>
Link: https://lore.kernel.org/r/20231207014655.1252484-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:31 -08:00
Arnaldo Carvalho de Melo
f19a1cb1f9 perf bpf: Decouple creating the evlist from adding the SB event
[ Upstream commit b38d85ef49cf6af9d1deaaf01daf0986d47e6c7a ]

Renaming bpf_event__add_sb_event() to evlist__add_sb_event() and
requiring that the evlist be allocated beforehand.

This will allow using the same side band thread and evlist to be used
for multiple purposes in addition to react to PERF_RECORD_BPF_EVENT soon
after they are generated.

Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Song Liu <songliubraving@fb.com>
Link: http://lore.kernel.org/lkml/20200429131106.27974-4-acme@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Stable-dep-of: 9c51f8788b5d ("perf env: Avoid recursively taking env->bpf_progs.lock")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:31 -08:00
Arnaldo Carvalho de Melo
739b800279 perf top: Move sb_evlist to 'struct perf_top'
[ Upstream commit ca6c9c8b107f9788662117587cd24bbb19cea94d ]

Where state related to a 'perf top' session is grouped.

Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Song Liu <songliubraving@fb.com>
Link: http://lore.kernel.org/lkml/20200429131106.27974-3-acme@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Stable-dep-of: 9c51f8788b5d ("perf env: Avoid recursively taking env->bpf_progs.lock")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-25 14:34:31 -08:00