
This commit back ports the DPLL related commits from the upstream kernel that are identified by Intel to provide the expected SyncE/GNSS functionality. There are totally 46 back ported commits included the four commits I added are used to resolve the conflicts during back porting. The 0046 patch is cherry picked from kernel-6.9. The 0031-0045 patches are cherry picked from kernel-6.8. The 0001-0030 patches are cherry picked from kernel-6.7. We also change the in-tree ice driver version to 6.6.40-stx.2 from 6.6.40-stx.1. * To fix the conflict of 91e43ca0090b ("ice: fix linking when CONFIG_PTP_1588_CLOCK=n"), we cherry pick 12a5a28b565b ("ice: remove ICE_F_PTP_EXTTS feature flag") and 89776a6a702e ("ice: check netlist before enabling ICE_F_GNSS"). Adjust 12a5a28b565b because 0d1b22367ec2 ("ice: fix pin assignment for E810-T without SMA control") already included the part code of 12a5a28b565b. https://git.yoctoproject.org/linux-yocto/commit/?id=0d1b22367ec2 * Cherry pick 7049fd5df7 ("netlink: specs: remove redundant type keys from attributes in subsets") to fix the the conflict of c3c6ab95c397 ("dpll: spec: add support for pin-dpll signal phase offset/adjust.") * Cherry pick be16574609f1 ("ice: introduce hw->phy_model for handling PTP PHY differences") to fix the confilict of 6db5f2cd9ebb ("ice: dpll:fix output pin capabilities"). Verification: - Build kernel and out of tree modules success for rt and std. - Install success onto a All-in-One lab with rt kernel. - Boot up successfully in the lab. - interfaces are up and pass packets for rt and std. - Check dmesg to see DDP package is loaded successfully and the version is 1.3.36.0 for rt and std, that is same with the OOT ice-1.14.9 driver. - The SyncE/GNSS functionality tests were done by the network team. Story: 2011056 Task: 50797 Change-Id: I715480681c7c43d53b0a0126b34135562e9d02a0 Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
76 lines
2.4 KiB
Diff
76 lines
2.4 KiB
Diff
From f29c2ce39b0b42b323163a29fb1e0366f75b3e91 Mon Sep 17 00:00:00 2001
|
|
From: Hao Ge <gehao@kylinos.cn>
|
|
Date: Tue, 21 Nov 2023 09:37:09 +0800
|
|
Subject: [PATCH 30/46] dpll: Fix potential msg memleak when genlmsg_put_reply
|
|
failed
|
|
|
|
We should clean the skb resource if genlmsg_put_reply failed.
|
|
|
|
Fixes: 9d71b54b65b1 ("dpll: netlink: Add DPLL framework base functions")
|
|
Signed-off-by: Hao Ge <gehao@kylinos.cn>
|
|
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
|
|
Link: https://lore.kernel.org/r/20231121013709.73323-1-gehao@kylinos.cn
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
(cherry picked from commit b6fe6f03716da246b453369f98a553d4ab21447c)
|
|
Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
|
|
---
|
|
drivers/dpll/dpll_netlink.c | 17 ++++++++++++-----
|
|
1 file changed, 12 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/drivers/dpll/dpll_netlink.c b/drivers/dpll/dpll_netlink.c
|
|
index a6dc3997bf5c..442a0ebeb953 100644
|
|
--- a/drivers/dpll/dpll_netlink.c
|
|
+++ b/drivers/dpll/dpll_netlink.c
|
|
@@ -1093,9 +1093,10 @@ int dpll_nl_pin_id_get_doit(struct sk_buff *skb, struct genl_info *info)
|
|
return -ENOMEM;
|
|
hdr = genlmsg_put_reply(msg, info, &dpll_nl_family, 0,
|
|
DPLL_CMD_PIN_ID_GET);
|
|
- if (!hdr)
|
|
+ if (!hdr) {
|
|
+ nlmsg_free(msg);
|
|
return -EMSGSIZE;
|
|
-
|
|
+ }
|
|
pin = dpll_pin_find_from_nlattr(info);
|
|
if (!IS_ERR(pin)) {
|
|
ret = dpll_msg_add_pin_handle(msg, pin);
|
|
@@ -1123,8 +1124,10 @@ int dpll_nl_pin_get_doit(struct sk_buff *skb, struct genl_info *info)
|
|
return -ENOMEM;
|
|
hdr = genlmsg_put_reply(msg, info, &dpll_nl_family, 0,
|
|
DPLL_CMD_PIN_GET);
|
|
- if (!hdr)
|
|
+ if (!hdr) {
|
|
+ nlmsg_free(msg);
|
|
return -EMSGSIZE;
|
|
+ }
|
|
ret = dpll_cmd_pin_get_one(msg, pin, info->extack);
|
|
if (ret) {
|
|
nlmsg_free(msg);
|
|
@@ -1256,8 +1259,10 @@ int dpll_nl_device_id_get_doit(struct sk_buff *skb, struct genl_info *info)
|
|
return -ENOMEM;
|
|
hdr = genlmsg_put_reply(msg, info, &dpll_nl_family, 0,
|
|
DPLL_CMD_DEVICE_ID_GET);
|
|
- if (!hdr)
|
|
+ if (!hdr) {
|
|
+ nlmsg_free(msg);
|
|
return -EMSGSIZE;
|
|
+ }
|
|
|
|
dpll = dpll_device_find_from_nlattr(info);
|
|
if (!IS_ERR(dpll)) {
|
|
@@ -1284,8 +1289,10 @@ int dpll_nl_device_get_doit(struct sk_buff *skb, struct genl_info *info)
|
|
return -ENOMEM;
|
|
hdr = genlmsg_put_reply(msg, info, &dpll_nl_family, 0,
|
|
DPLL_CMD_DEVICE_GET);
|
|
- if (!hdr)
|
|
+ if (!hdr) {
|
|
+ nlmsg_free(msg);
|
|
return -EMSGSIZE;
|
|
+ }
|
|
|
|
ret = dpll_device_get_one(dpll, msg, info->extack);
|
|
if (ret) {
|
|
--
|
|
2.43.0
|
|
|