[Why]
The sequence for collecting down_reply from source perspective should
be:
Request_n->repeat (get partial reply of Request_n->clear message ready
flag to ack DPRX that the message is received) till all partial
replies for Request_n are received->new Request_n+1.
Now there is chance that drm_dp_mst_hpd_irq() will fire new down
request in the tx queue when the down reply is incomplete. Source is
restricted to generate interveleaved message transactions so we should
avoid it.
Also, while assembling partial reply packets, reading out DPCD DOWN_REP
Sideband MSG buffer + clearing DOWN_REP_MSG_RDY flag should be
wrapped up as a complete operation for reading out a reply packet.
Kicking off a new request before clearing DOWN_REP_MSG_RDY flag might
be risky. e.g. If the reply of the new request has overwritten the
DPRX DOWN_REP Sideband MSG buffer before source writing one to clear
DOWN_REP_MSG_RDY flag, source then unintentionally flushes the reply
for the new request. Should handle the up request in the same way.
[How]
Separete drm_dp_mst_hpd_irq() into 2 steps. After acking the MST IRQ
event, driver calls drm_dp_mst_hpd_irq_send_new_request() and might
trigger drm_dp_mst_kick_tx() only when there is no on going message
transaction.
Changes since v1:
* Reworked on review comments received
-> Adjust the fix to let driver explicitly kick off new down request
when mst irq event is handled and acked
-> Adjust the commit message
Changes since v2:
* Adjust the commit message
* Adjust the naming of the divided 2 functions and add a new input
parameter "ack".
* Adjust code flow as per review comments.
Changes since v3:
* Update the function description of drm_dp_mst_hpd_irq_handle_event
Changes since v4:
* Change ack of drm_dp_mst_hpd_irq_handle_event() to be an array align
the size of esi[]
Signed-off-by: Wayne Lin <Wayne.Lin(a)amd.com>
Cc: stable(a)vger.kernel.org
---
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 32 +++++------
drivers/gpu/drm/display/drm_dp_mst_topology.c | 54 ++++++++++++++++---
drivers/gpu/drm/i915/display/intel_dp.c | 7 +--
drivers/gpu/drm/nouveau/dispnv50/disp.c | 12 +++--
include/drm/display/drm_dp_mst_helper.h | 7 ++-
5 files changed, 81 insertions(+), 31 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index d5cec03eaa8d..ec629b4037e4 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -3263,6 +3263,7 @@ static void dm_handle_mst_sideband_msg(struct amdgpu_dm_connector *aconnector)
while (dret == dpcd_bytes_to_read &&
process_count < max_process_count) {
+ u8 ack[DP_PSR_ERROR_STATUS - DP_SINK_COUNT_ESI] = {};
u8 retry;
dret = 0;
@@ -3271,28 +3272,29 @@ static void dm_handle_mst_sideband_msg(struct amdgpu_dm_connector *aconnector)
DRM_DEBUG_DRIVER("ESI %02x %02x %02x\n", esi[0], esi[1], esi[2]);
/* handle HPD short pulse irq */
if (aconnector->mst_mgr.mst_state)
- drm_dp_mst_hpd_irq(
- &aconnector->mst_mgr,
- esi,
- &new_irq_handled);
+ drm_dp_mst_hpd_irq_handle_event(&aconnector->mst_mgr,
+ esi,
+ ack,
+ &new_irq_handled);
if (new_irq_handled) {
/* ACK at DPCD to notify down stream */
- const int ack_dpcd_bytes_to_write =
- dpcd_bytes_to_read - 1;
-
for (retry = 0; retry < 3; retry++) {
- u8 wret;
-
- wret = drm_dp_dpcd_write(
- &aconnector->dm_dp_aux.aux,
- dpcd_addr + 1,
- &esi[1],
- ack_dpcd_bytes_to_write);
- if (wret == ack_dpcd_bytes_to_write)
+ ssize_t wret;
+
+ wret = drm_dp_dpcd_writeb(&aconnector->dm_dp_aux.aux,
+ dpcd_addr + 1,
+ ack[1]);
+ if (wret == 1)
break;
}
+ if (retry == 3) {
+ DRM_ERROR("Failed to ack MST event.\n");
+ return;
+ }
+
+ drm_dp_mst_hpd_irq_send_new_request(&aconnector->mst_mgr);
/* check if there is new irq to be handled */
dret = drm_dp_dpcd_read(
&aconnector->dm_dp_aux.aux,
diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
index 38dab76ae69e..487d057a9582 100644
--- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
@@ -4053,17 +4053,28 @@ static int drm_dp_mst_handle_up_req(struct drm_dp_mst_topology_mgr *mgr)
}
/**
- * drm_dp_mst_hpd_irq() - MST hotplug IRQ notify
+ * drm_dp_mst_hpd_irq_handle_event() - MST hotplug IRQ handle MST event
* @mgr: manager to notify irq for.
* @esi: 4 bytes from SINK_COUNT_ESI
+ * @ack: 4 bytes used to ack events starting from SINK_COUNT_ESI
* @handled: whether the hpd interrupt was consumed or not
*
- * This should be called from the driver when it detects a short IRQ,
+ * This should be called from the driver when it detects a HPD IRQ,
* along with the value of the DEVICE_SERVICE_IRQ_VECTOR_ESI0. The
- * topology manager will process the sideband messages received as a result
- * of this.
+ * topology manager will process the sideband messages received
+ * as indicated in the DEVICE_SERVICE_IRQ_VECTOR_ESI0 and set the
+ * corresponding flags that Driver has to ack the DP receiver later.
+ *
+ * Note that driver shall also call
+ * drm_dp_mst_hpd_irq_send_new_request() if the 'handled' is set
+ * after calling this function, to try to kick off a new request in
+ * the queue if the previous message transaction is completed.
+ *
+ * See also:
+ * drm_dp_mst_hpd_irq_send_new_request()
*/
-int drm_dp_mst_hpd_irq(struct drm_dp_mst_topology_mgr *mgr, u8 *esi, bool *handled)
+int drm_dp_mst_hpd_irq_handle_event(struct drm_dp_mst_topology_mgr *mgr, const u8 *esi,
+ u8 *ack, bool *handled)
{
int ret = 0;
int sc;
@@ -4078,18 +4089,47 @@ int drm_dp_mst_hpd_irq(struct drm_dp_mst_topology_mgr *mgr, u8 *esi, bool *handl
if (esi[1] & DP_DOWN_REP_MSG_RDY) {
ret = drm_dp_mst_handle_down_rep(mgr);
*handled = true;
+ ack[1] |= DP_DOWN_REP_MSG_RDY;
}
if (esi[1] & DP_UP_REQ_MSG_RDY) {
ret |= drm_dp_mst_handle_up_req(mgr);
*handled = true;
+ ack[1] |= DP_UP_REQ_MSG_RDY;
}
- drm_dp_mst_kick_tx(mgr);
return ret;
}
-EXPORT_SYMBOL(drm_dp_mst_hpd_irq);
+EXPORT_SYMBOL(drm_dp_mst_hpd_irq_handle_event);
+/**
+ * drm_dp_mst_hpd_irq_send_new_request() - MST hotplug IRQ kick off new request
+ * @mgr: manager to notify irq for.
+ *
+ * This should be called from the driver when mst irq event is handled
+ * and acked. Note that new down request should only be sent when
+ * previous message transaction is completed. Source is not supposed to generate
+ * interleaved message transactions.
+ */
+void drm_dp_mst_hpd_irq_send_new_request(struct drm_dp_mst_topology_mgr *mgr)
+{
+ struct drm_dp_sideband_msg_tx *txmsg;
+ bool kick = true;
+
+ mutex_lock(&mgr->qlock);
+ txmsg = list_first_entry_or_null(&mgr->tx_msg_downq,
+ struct drm_dp_sideband_msg_tx, next);
+ /* If last transaction is not completed yet*/
+ if (!txmsg ||
+ txmsg->state == DRM_DP_SIDEBAND_TX_START_SEND ||
+ txmsg->state == DRM_DP_SIDEBAND_TX_SENT)
+ kick = false;
+ mutex_unlock(&mgr->qlock);
+
+ if (kick)
+ drm_dp_mst_kick_tx(mgr);
+}
+EXPORT_SYMBOL(drm_dp_mst_hpd_irq_send_new_request);
/**
* drm_dp_mst_detect_port() - get connection status for an MST port
* @connector: DRM connector for this port
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 4bec8cd7979f..f4a2e72a5c20 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -4062,9 +4062,7 @@ intel_dp_mst_hpd_irq(struct intel_dp *intel_dp, u8 *esi, u8 *ack)
{
bool handled = false;
- drm_dp_mst_hpd_irq(&intel_dp->mst_mgr, esi, &handled);
- if (handled)
- ack[1] |= esi[1] & (DP_DOWN_REP_MSG_RDY | DP_UP_REQ_MSG_RDY);
+ drm_dp_mst_hpd_irq_handle_event(&intel_dp->mst_mgr, esi, ack, &handled);
if (esi[1] & DP_CP_IRQ) {
intel_hdcp_handle_cp_irq(intel_dp->attached_connector);
@@ -4139,6 +4137,9 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
if (!intel_dp_ack_sink_irq_esi(intel_dp, ack))
drm_dbg_kms(&i915->drm, "Failed to ack ESI\n");
+
+ if (ack[1] & (DP_DOWN_REP_MSG_RDY | DP_UP_REQ_MSG_RDY))
+ drm_dp_mst_hpd_irq_send_new_request(&intel_dp->mst_mgr);
}
return link_ok;
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index 9b6824f6b9e4..42e1665ba11a 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -1359,22 +1359,26 @@ nv50_mstm_service(struct nouveau_drm *drm,
u8 esi[8] = {};
while (handled) {
+ u8 ack[8] = {};
+
rc = drm_dp_dpcd_read(aux, DP_SINK_COUNT_ESI, esi, 8);
if (rc != 8) {
ret = false;
break;
}
- drm_dp_mst_hpd_irq(&mstm->mgr, esi, &handled);
+ drm_dp_mst_hpd_irq_handle_event(&mstm->mgr, esi, ack, &handled);
if (!handled)
break;
- rc = drm_dp_dpcd_write(aux, DP_SINK_COUNT_ESI + 1, &esi[1],
- 3);
- if (rc != 3) {
+ rc = drm_dp_dpcd_writeb(aux, DP_SINK_COUNT_ESI + 1, ack[1]);
+
+ if (rc != 1) {
ret = false;
break;
}
+
+ drm_dp_mst_hpd_irq_send_new_request(&mstm->mgr);
}
if (!ret)
diff --git a/include/drm/display/drm_dp_mst_helper.h b/include/drm/display/drm_dp_mst_helper.h
index 32c764fb9cb5..40e855c8407c 100644
--- a/include/drm/display/drm_dp_mst_helper.h
+++ b/include/drm/display/drm_dp_mst_helper.h
@@ -815,8 +815,11 @@ void drm_dp_mst_topology_mgr_destroy(struct drm_dp_mst_topology_mgr *mgr);
bool drm_dp_read_mst_cap(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE]);
int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool mst_state);
-int drm_dp_mst_hpd_irq(struct drm_dp_mst_topology_mgr *mgr, u8 *esi, bool *handled);
-
+int drm_dp_mst_hpd_irq_handle_event(struct drm_dp_mst_topology_mgr *mgr,
+ const u8 *esi,
+ u8 *ack,
+ bool *handled);
+void drm_dp_mst_hpd_irq_send_new_request(struct drm_dp_mst_topology_mgr *mgr);
int
drm_dp_mst_detect_port(struct drm_connector *connector,
--
2.37.3
This is the start of the stable review cycle for the 5.4.247 release.
There are 45 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Wed, 14 Jun 2023 10:16:41 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.247-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 5.4.247-rc1
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Revert "staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE"
YouChing Lin <ycllin(a)mxic.com.tw>
mtd: spinand: macronix: Add support for MX35LFxGE4AD
Zixuan Fu <r33s3n6(a)gmail.com>
btrfs: unset reloc control if transaction commit fails in prepare_to_relocate()
Josef Bacik <josef(a)toxicpanda.com>
btrfs: check return value of btrfs_commit_transaction in relocation
Ilya Dryomov <idryomov(a)gmail.com>
rbd: get snapshot context after exclusive lock is ensured to be held
Ville Syrjälä <ville.syrjala(a)linux.intel.com>
drm/atomic: Don't pollute crtc_state->mode_blob with error pointers
Paulo Alcantara <pc(a)cjr.nz>
cifs: handle empty list of targets in cifs_reconnect()
Paulo Alcantara <pc(a)cjr.nz>
cifs: get rid of unused parameter in reconn_setup_dfs_targets()
Theodore Ts'o <tytso(a)mit.edu>
ext4: only check dquot_initialize_needed() when debugging
Randy Dunlap <rdunlap(a)infradead.org>
eeprom: at24: also select REGMAP
Uwe Kleine-König <u.kleine-koenig(a)pengutronix.de>
i2c: sprd: Delete i2c adapter in .remove's error path
Jiri Slaby (SUSE) <jirislaby(a)kernel.org>
bonding (gcc13): synchronize bond_{a,t}lb_xmit() types
Ruihan Li <lrh2000(a)pku.edu.cn>
usb: usbfs: Use consistent mmap functions
Ruihan Li <lrh2000(a)pku.edu.cn>
usb: usbfs: Enforce page requirements for mmap
Martin Hundebøll <martin(a)geanix.com>
pinctrl: meson-axg: add missing GPIOA_18 gpio group
Ilya Dryomov <idryomov(a)gmail.com>
rbd: move RBD_OBJ_FLAG_COPYUP_ENABLED flag setting
Luiz Augusto von Dentz <luiz.von.dentz(a)intel.com>
Bluetooth: Fix use-after-free in hci_remove_ltk/hci_remove_irk
Xiubo Li <xiubli(a)redhat.com>
ceph: fix use-after-free bug for inodes when flushing capsnaps
Fedor Pchelkin <pchelkin(a)ispras.ru>
can: j1939: avoid possible use-after-free when j1939_can_rx_register fails
Fedor Pchelkin <pchelkin(a)ispras.ru>
can: j1939: change j1939_netdev_lock type to mutex
Oleksij Rempel <linux(a)rempel-privat.de>
can: j1939: j1939_sk_send_loop_abort(): improved error queue handling in J1939 Socket
Chia-I Wu <olvaffe(a)gmail.com>
drm/amdgpu: fix xclk freq on CHIP_STONEY
RenHai <kean0048(a)gmail.com>
ALSA: hda/realtek: Add Lenovo P3 Tower platform
Ai Chao <aichao(a)kylinos.cn>
ALSA: hda/realtek: Add a quirk for HP Slim Desktop S01
Dmitry Torokhov <dmitry.torokhov(a)gmail.com>
Input: psmouse - fix OOB access in Elantech protocol
Ismael Ferreras Morezuelas <swyterzone(a)gmail.com>
Input: xpad - delete a Razer DeathAdder mouse VID/PID entry
Vladislav Efanov <VEfanov(a)ispras.ru>
batman-adv: Broken sync while rescheduling delayed work
Somnath Kotur <somnath.kotur(a)broadcom.com>
bnxt_en: Query default VLAN before VNIC setup on a VF
Ben Hutchings <ben(a)decadent.org.uk>
lib: cpu_rmap: Fix potential use-after-free in irq_cpu_rmap_release()
Hangyu Hua <hbh25y(a)gmail.com>
net: sched: fix possible refcount leak in tc_chain_tmplt_add()
Eric Dumazet <edumazet(a)google.com>
net: sched: move rtm_tca_policy declaration to include file
Eric Dumazet <edumazet(a)google.com>
rfs: annotate lockless accesses to RFS sock flow table
Eric Dumazet <edumazet(a)google.com>
rfs: annotate lockless accesses to sk->sk_rxhash
Kuniyuki Iwashima <kuniyu(a)amazon.com>
netfilter: ipset: Add schedule point in call_ad().
Tijs Van Buggenhout <tijs.van.buggenhout(a)axsguard.com>
netfilter: conntrack: fix NULL pointer dereference in nf_confirm_cthelper
Sungwoo Kim <iam(a)sung-woo.kim>
Bluetooth: L2CAP: Add missing checks for invalid DCID
Ying Hsu <yinghsu(a)chromium.org>
Bluetooth: Fix l2cap_disconnect_req deadlock
Alexander Sverdlin <alexander.sverdlin(a)siemens.com>
net: dsa: lan9303: allow vid != 0 in port_fdb_{add|del} methods
Qingfang DENG <qingfang.deng(a)siflower.com.cn>
neighbour: fix unaligned access to pneigh_entry
Gustavo A. R. Silva <gustavo(a)embeddedor.com>
neighbour: Replace zero-length array with flexible-array member
Stephan Gerhold <stephan(a)gerhold.net>
spi: qup: Request DMA before enabling clocks
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
i40e: fix build warnings in i40e_alloc.h
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
i40iw: fix build warning in i40iw_manage_apbvt()
Jiri Slaby (SUSE) <jirislaby(a)kernel.org>
block/blk-iocost (gcc13): keep large values in a new enum
Arnd Bergmann <arnd(a)arndb.de>
blk-iocost: avoid 64-bit division in ioc_timer_fn
-------------
Diffstat:
Makefile | 4 +-
block/blk-iocost.c | 10 ++--
drivers/block/rbd.c | 73 +++++++++++++++++-----------
drivers/gpu/drm/amd/amdgpu/vi.c | 11 ++++-
drivers/gpu/drm/drm_atomic_uapi.c | 14 +++---
drivers/i2c/busses/i2c-sprd.c | 8 +--
drivers/infiniband/hw/i40iw/i40iw.h | 5 +-
drivers/input/joystick/xpad.c | 1 -
drivers/input/mouse/elantech.c | 9 ++--
drivers/misc/eeprom/Kconfig | 1 +
drivers/mtd/nand/spi/macronix.c | 16 ++++++
drivers/net/dsa/lan9303-core.c | 4 --
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 ++
drivers/net/ethernet/intel/i40e/i40e_alloc.h | 17 +++----
drivers/pinctrl/meson/pinctrl-meson-axg.c | 1 +
drivers/spi/spi-qup.c | 37 +++++++-------
drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 6 +--
drivers/staging/rtl8192e/rtl8192e/rtl_core.h | 5 ++
drivers/usb/core/buffer.c | 41 ++++++++++++++++
drivers/usb/core/devio.c | 20 +++++---
fs/btrfs/relocation.c | 14 ++++--
fs/ceph/caps.c | 6 +++
fs/ceph/snap.c | 4 +-
fs/cifs/connect.c | 15 +++---
fs/ext4/xattr.c | 6 ++-
include/linux/netdevice.h | 7 ++-
include/linux/usb/hcd.h | 5 ++
include/net/bond_alb.h | 4 +-
include/net/neighbour.h | 2 +-
include/net/pkt_sched.h | 2 +
include/net/sock.h | 18 +++++--
lib/cpu_rmap.c | 2 +-
net/batman-adv/distributed-arp-table.c | 2 +-
net/bluetooth/hci_core.c | 8 +--
net/bluetooth/l2cap_core.c | 13 +++++
net/can/j1939/main.c | 24 ++++-----
net/can/j1939/socket.c | 5 ++
net/core/dev.c | 6 ++-
net/netfilter/ipset/ip_set_core.c | 8 +++
net/netfilter/nf_conntrack_core.c | 3 ++
net/sched/cls_api.c | 3 +-
sound/pci/hda/patch_realtek.c | 2 +
42 files changed, 305 insertions(+), 140 deletions(-)
This is the start of the stable review cycle for the 4.14.318 release.
There are 21 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Wed, 14 Jun 2023 10:16:41 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.318-r…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.14.318-rc1
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Revert "staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE"
Zixuan Fu <r33s3n6(a)gmail.com>
btrfs: unset reloc control if transaction commit fails in prepare_to_relocate()
Josef Bacik <josef(a)toxicpanda.com>
btrfs: check return value of btrfs_commit_transaction in relocation
Theodore Ts'o <tytso(a)mit.edu>
ext4: only check dquot_initialize_needed() when debugging
Uwe Kleine-König <u.kleine-koenig(a)pengutronix.de>
i2c: sprd: Delete i2c adapter in .remove's error path
Luiz Augusto von Dentz <luiz.von.dentz(a)intel.com>
Bluetooth: Fix use-after-free in hci_remove_ltk/hci_remove_irk
Xiubo Li <xiubli(a)redhat.com>
ceph: fix use-after-free bug for inodes when flushing capsnaps
Chia-I Wu <olvaffe(a)gmail.com>
drm/amdgpu: fix xclk freq on CHIP_STONEY
Dmitry Torokhov <dmitry.torokhov(a)gmail.com>
Input: psmouse - fix OOB access in Elantech protocol
Ismael Ferreras Morezuelas <swyterzone(a)gmail.com>
Input: xpad - delete a Razer DeathAdder mouse VID/PID entry
Vladislav Efanov <VEfanov(a)ispras.ru>
batman-adv: Broken sync while rescheduling delayed work
Somnath Kotur <somnath.kotur(a)broadcom.com>
bnxt_en: Query default VLAN before VNIC setup on a VF
Ben Hutchings <ben(a)decadent.org.uk>
lib: cpu_rmap: Fix potential use-after-free in irq_cpu_rmap_release()
Eric Dumazet <edumazet(a)google.com>
net: sched: move rtm_tca_policy declaration to include file
Eric Dumazet <edumazet(a)google.com>
rfs: annotate lockless accesses to RFS sock flow table
Eric Dumazet <edumazet(a)google.com>
rfs: annotate lockless accesses to sk->sk_rxhash
Sungwoo Kim <iam(a)sung-woo.kim>
Bluetooth: L2CAP: Add missing checks for invalid DCID
Ying Hsu <yinghsu(a)chromium.org>
Bluetooth: Fix l2cap_disconnect_req deadlock
Stephan Gerhold <stephan(a)gerhold.net>
spi: qup: Request DMA before enabling clocks
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
i40e: fix build warnings in i40e_alloc.h
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
i40iw: fix build warning in i40iw_manage_apbvt()
-------------
Diffstat:
Makefile | 4 +--
drivers/gpu/drm/amd/amdgpu/vi.c | 11 +++++++--
drivers/i2c/busses/i2c-sprd.c | 6 +++--
drivers/infiniband/hw/i40iw/i40iw.h | 5 ++--
drivers/input/joystick/xpad.c | 1 -
drivers/input/mouse/elantech.c | 9 ++++---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 +++
drivers/net/ethernet/intel/i40e/i40e_alloc.h | 17 +++++--------
drivers/spi/spi-qup.c | 37 ++++++++++++++--------------
drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 6 ++---
drivers/staging/rtl8192e/rtl8192e/rtl_core.h | 5 ++++
fs/btrfs/relocation.c | 14 ++++++++---
fs/ceph/caps.c | 6 +++++
fs/ceph/snap.c | 4 ++-
fs/ext4/xattr.c | 6 +++--
include/linux/netdevice.h | 7 ++++--
include/net/pkt_sched.h | 2 ++
include/net/sock.h | 18 ++++++++++----
lib/cpu_rmap.c | 2 +-
net/batman-adv/distributed-arp-table.c | 2 +-
net/bluetooth/hci_core.c | 8 +++---
net/bluetooth/l2cap_core.c | 13 ++++++++++
net/core/dev.c | 6 +++--
net/sched/cls_api.c | 2 --
24 files changed, 123 insertions(+), 71 deletions(-)
From: Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
svc_create_memory_pool() is only called from stratix10_svc_drv_probe().
Most of resources in the probe are managed, but not this memremap() call.
There is also no memunmap() call in the file.
So switch to devm_memremap() to avoid a resource leak.
Cc: stable(a)vger.kernel.org
Fixes: 7ca5ce896524 ("firmware: add Intel Stratix10 service layer driver")
Link: https://lore.kernel.org/all/783e9dfbba34e28505c9efa8bba41f97fd0fa1dc.168610…
Signed-off-by: Christophe JAILLET <christophe.jaillet(a)wanadoo.fr>
Signed-off-by: Dinh Nguyen <dinguyen(a)kernel.org>
---
drivers/firmware/stratix10-svc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/firmware/stratix10-svc.c b/drivers/firmware/stratix10-svc.c
index 80f4e2d14e04..2d674126160f 100644
--- a/drivers/firmware/stratix10-svc.c
+++ b/drivers/firmware/stratix10-svc.c
@@ -755,7 +755,7 @@ svc_create_memory_pool(struct platform_device *pdev,
end = rounddown(sh_memory->addr + sh_memory->size, PAGE_SIZE);
paddr = begin;
size = end - begin;
- va = memremap(paddr, size, MEMREMAP_WC);
+ va = devm_memremap(dev, paddr, size, MEMREMAP_WC);
if (!va) {
dev_err(dev, "fail to remap shared memory\n");
return ERR_PTR(-EINVAL);
--
2.25.1
I see that you are one of the promising exhibitor at Siggraph 2023. Would you be interested in acquiring the pre-registered attendees list from the show?
Please let me know the criteria you would like to acquire (which mean business to you). You can just fill in below and revert back on the same email.
Target Industries: ______?
Job Titles: ______?
Geography: ______?
Kind Regards,
Anna Brown
Do not assing the Linux device to struct fb_info.dev. The call to
register_framebuffer() initializes the field to the fbdev device.
Drivers should not override its value.
Fixes a bug where the driver incorrectly decreases the hardware
device's reference counter and leaks the fbdev device.
v2:
* add Fixes tag (Dan)
Signed-off-by: Thomas Zimmermann <tzimmermann(a)suse.de>
Fixes: 88017bda96a5 ("ep93xx video driver")
Cc: <stable(a)vger.kernel.org> # v2.6.32+
Reviewed-by: Javier Martinez Canillas <javierm(a)redhat.com>
Reviewed-by: Sam Ravnborg <sam(a)ravnborg.org>
---
drivers/video/fbdev/ep93xx-fb.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/video/fbdev/ep93xx-fb.c b/drivers/video/fbdev/ep93xx-fb.c
index f6cd200fe50ff..37309f9dbe828 100644
--- a/drivers/video/fbdev/ep93xx-fb.c
+++ b/drivers/video/fbdev/ep93xx-fb.c
@@ -474,7 +474,6 @@ static int ep93xxfb_probe(struct platform_device *pdev)
if (!info)
return -ENOMEM;
- info->dev = &pdev->dev;
platform_set_drvdata(pdev, info);
fbi = info->par;
fbi->mach_info = mach_info;
--
2.41.0