Skip to contentSkip to conversation

FAILED: patch "[PATCH] RDMA/ipoib: Allow user space differentiate between valid" failed to apply to 4.19-stable tree

PATCH [email protected] 1 participant 1 message May 23, 2019

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From b79656ed44c6865e17bcd93472ec39488bcc4984 Mon Sep 17 00:00:00 2001
From: Leon Romanovsky <[email protected]>
Date: Mon, 6 May 2019 14:23:04 +0300
Subject: [PATCH] RDMA/ipoib: Allow user space differentiate between valid
dev_port

Systemd triggers the following warning during IPoIB device load:

mlx5_core 0000:00:0c.0 ib0: "systemd-udevd" wants to know my dev_id.
Should it look at dev_port instead?
See Documentation/ABI/testing/sysfs-class-net for more info.

This is caused due to user space attempt to differentiate old systems without dev_port and new systems with dev_port. In case dev_port will be zero, the systemd will try to read dev_id instead.

There is no need to print a warning in such case, because it is valid situation and it is needed to ensure systemd compatibility with old kernels.

Cc <[email protected]> # 4.19
Fixes f6350da41dc7 ("IB/ipoib: Log sysfs 'dev_id' accesses from userspace")
drivers/infiniband/ulp/ipoib/ipoib_main.c +12 -1
index 48eda16db1a7..9b5e11d3fb85 100644
@@ -2402,7 +2402,18 @@ static ssize_t dev_id_show(struct device *dev,
 {
 	struct net_device *ndev = to_net_dev(dev);
 
-	if (ndev->dev_id == ndev->dev_port)
+	/*
+	 * ndev->dev_port will be equal to 0 in old kernel prior to commit
+	 * 9b8b2a323008 ("IB/ipoib: Use dev_port to expose network interface
+	 * port numbers") Zero was chosen as special case for user space
+	 * applications to fallback and query dev_id to check if it has
+	 * different value or not.
+	 *
+	 * Don't print warning in such scenario.
+	 *
+	 * https://github.com/systemd/systemd/blob/master/src/udev/udev-builtin-net_id.c#L358
+	 */
+	if (ndev->dev_port && ndev->dev_id == ndev->dev_port)
 		netdev_info_once(ndev,
 			"\"%s\" wants to know my dev_id. Should it look at dev_port instead? See Documentation/ABI/testing/sysfs-class-net for more info.\n",
 			current->comm);