+++ /dev/null
-From 0fc403192dcc8def1f6284959141608ac4c86699 Mon Sep 17 00:00:00 2001
-From: Namjae Jeon <linkinjeon@kernel.org>
-Date: Fri, 10 Jan 2025 13:37:05 +0900
-Subject: ksmbd: browse interfaces list on FSCTL_QUERY_INTERFACE_INFO IOCTL
-
-[ Upstream commit b2d99376c5d61eb60ffdb6c503e4b6c8f9712ddd ]
-
-ksmbd.mount will give each interfaces list and bind_interfaces_only flags
-to ksmbd server. Previously, the interfaces list was sent only
-when bind_interfaces_only was enabled.
-ksmbd server browse only interfaces list given from ksmbd.conf on
-FSCTL_QUERY_INTERFACE_INFO IOCTL.
-
-Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
-Signed-off-by: Steve French <stfrench@microsoft.com>
-Stable-dep-of: 21a4e47578d4 ("ksmbd: fix use-after-free in __smb2_lease_break_noti()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- fs/smb/server/ksmbd_netlink.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-(limited to 'fs/smb/server/ksmbd_netlink.h')
-
---- a/fs/smb/server/ksmbd_netlink.h
-+++ b/fs/smb/server/ksmbd_netlink.h
-@@ -108,8 +108,9 @@ struct ksmbd_startup_request {
- __u32 smb2_max_credits; /* MAX credits */
- __u32 smbd_max_io_size; /* smbd read write size */
- __u32 max_connections; /* Number of maximum simultaneous connections */
-+ __s8 bind_interfaces_only;
- __u32 max_ip_connections; /* Number of maximum connection per ip address */
-- __u32 reserved[125]; /* Reserved room */
-+ __s8 reserved[499]; /* Reserved room */
- __u32 ifc_list_sz; /* interfaces list size */
- __s8 ____payload[];
- } __packed;
static void r8168fp_adjust_ocp_cmd(struct rtl8169_private *tp, u32 *cmd, int type)
{
/* based on RTL8168FP_OOBMAC_BASE in vendor driver */
-@@ -5204,6 +5262,7 @@ static int rtl_init_one(struct pci_dev *
+@@ -5205,6 +5263,7 @@ static int rtl_init_one(struct pci_dev *
raw_spin_lock_init(&tp->cfg9346_usage_lock);
raw_spin_lock_init(&tp->config25_lock);
raw_spin_lock_init(&tp->mac_ocp_lock);
dev->tstats = devm_netdev_alloc_pcpu_stats(&pdev->dev,
struct pcpu_sw_netstats);
-@@ -5360,6 +5419,12 @@ static int rtl_init_one(struct pci_dev *
+@@ -5361,6 +5420,12 @@ static int rtl_init_one(struct pci_dev *
if (rc)
return rc;
obj-$(CONFIG_R8169) += r8169.o
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5419,11 +5419,10 @@ static int rtl_init_one(struct pci_dev *
+@@ -5420,11 +5420,10 @@ static int rtl_init_one(struct pci_dev *
if (rc)
return rc;
genphy_soft_reset(tp->phydev);
}
-@@ -5121,7 +5096,9 @@ static int r8169_mdio_register(struct rt
+@@ -5122,7 +5097,9 @@ static int r8169_mdio_register(struct rt
}
tp->phydev->mac_managed_pm = true;
phy_support_asym_pause(tp->phydev);
/* PHY will be woken up in rtl_open() */
-@@ -5256,7 +5233,6 @@ static int rtl_init_one(struct pci_dev *
+@@ -5257,7 +5234,6 @@ static int rtl_init_one(struct pci_dev *
tp->dev = dev;
tp->pci_dev = pdev;
tp->supports_gmii = ent->driver_data == RTL_CFG_NO_GBIT ? 0 : 1;
padto = max_t(unsigned int, padto, ETH_ZLEN);
break;
default:
-@@ -5148,7 +5205,7 @@ static void rtl_hw_initialize(struct rtl
+@@ -5149,7 +5206,7 @@ static void rtl_hw_initialize(struct rtl
case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
rtl_hw_init_8168g(tp);
break;
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5297,11 +5297,6 @@ static int rtl_init_one(struct pci_dev *
+@@ -5298,11 +5298,6 @@ static int rtl_init_one(struct pci_dev *
raw_spin_lock_init(&tp->mac_ocp_lock);
mutex_init(&tp->led_lock);
/* Get the *optional* external "ether_clk" used on some boards */
tp->clk = devm_clk_get_optional_enabled(&pdev->dev, "ether_clk");
if (IS_ERR(tp->clk))
-@@ -5416,6 +5411,8 @@ static int rtl_init_one(struct pci_dev *
+@@ -5417,6 +5412,8 @@ static int rtl_init_one(struct pci_dev *
dev->hw_features |= NETIF_F_RXALL;
dev->hw_features |= NETIF_F_RXFCS;
void r8169_get_led_name(struct rtl8169_private *tp, int idx,
char *buf, int buf_len)
{
-@@ -5449,10 +5500,12 @@ static int rtl_init_one(struct pci_dev *
+@@ -5450,10 +5501,12 @@ static int rtl_init_one(struct pci_dev *
if (rc)
return rc;
u32 ocp_base;
};
-@@ -5075,6 +5077,8 @@ static void rtl_remove_one(struct pci_de
+@@ -5076,6 +5078,8 @@ static void rtl_remove_one(struct pci_de
cancel_work_sync(&tp->wk.work);
unregister_netdev(tp->dev);
if (tp->dash_type != RTL_DASH_NONE)
-@@ -5534,9 +5538,9 @@ static int rtl_init_one(struct pci_dev *
+@@ -5535,9 +5539,9 @@ static int rtl_init_one(struct pci_dev *
if (IS_ENABLED(CONFIG_R8169_LEDS)) {
if (rtl_is_8125(tp))
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5077,7 +5077,8 @@ static void rtl_remove_one(struct pci_de
+@@ -5078,7 +5078,8 @@ static void rtl_remove_one(struct pci_de
cancel_work_sync(&tp->wk.work);
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5118,12 +5118,10 @@ static void rtl_set_irq_mask(struct rtl8
+@@ -5119,12 +5119,10 @@ static void rtl_set_irq_mask(struct rtl8
tp->irq_mask = RxOK | RxErr | TxOK | TxErr | LinkChg;
if (tp->mac_version <= RTL_GIGA_MAC_VER_06)
padto = max_t(unsigned int, padto, ETH_ZLEN);
break;
default:
-@@ -5295,7 +5307,7 @@ static void rtl_hw_initialize(struct rtl
+@@ -5296,7 +5308,7 @@ static void rtl_hw_initialize(struct rtl
case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
rtl_hw_init_8168g(tp);
break;
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5492,11 +5492,6 @@ static int rtl_init_one(struct pci_dev *
+@@ -5493,11 +5493,6 @@ static int rtl_init_one(struct pci_dev *
dev->features |= dev->hw_features;
if (rtl_chip_supports_csum_v2(tp)) {
dev->hw_features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6;
netif_set_tso_max_size(dev, RTL_GSO_MAX_SIZE_V2);
-@@ -5507,6 +5502,17 @@ static int rtl_init_one(struct pci_dev *
+@@ -5508,6 +5503,17 @@ static int rtl_init_one(struct pci_dev *
netif_set_tso_max_segs(dev, RTL_GSO_MAX_SEGS_V1);
}
switch (tp->mac_version) {
case RTL_GIGA_MAC_VER_02 ... RTL_GIGA_MAC_VER_06:
-@@ -5461,8 +5438,6 @@ static int rtl_init_one(struct pci_dev *
+@@ -5462,8 +5439,6 @@ static int rtl_init_one(struct pci_dev *
tp->supports_gmii = ent->driver_data == RTL_CFG_NO_GBIT ? 0 : 1;
tp->ocp_base = OCP_STD_PHY_BASE;
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5237,6 +5237,11 @@ static int r8169_mdio_register(struct rt
+@@ -5238,6 +5238,11 @@ static int r8169_mdio_register(struct rt
tp->phydev->supported_eee);
phy_support_asym_pause(tp->phydev);
rtl_irq_disable(tp);
napi_schedule(&tp->napi);
out:
-@@ -5107,9 +5099,6 @@ static void rtl_set_irq_mask(struct rtl8
+@@ -5108,9 +5100,6 @@ static void rtl_set_irq_mask(struct rtl8
if (tp->mac_version <= RTL_GIGA_MAC_VER_06)
tp->irq_mask |= SYSErr | RxFIFOOver;
}
static int rtl_alloc_irq(struct rtl8169_private *tp)
-@@ -5305,7 +5294,6 @@ static int rtl_jumbo_max(struct rtl8169_
+@@ -5306,7 +5295,6 @@ static int rtl_jumbo_max(struct rtl8169_
case RTL_GIGA_MAC_VER_02 ... RTL_GIGA_MAC_VER_06:
return JUMBO_7K;
/* RTL8168b */
padto = max_t(unsigned int, padto, ETH_ZLEN);
break;
default:
-@@ -5275,7 +5275,7 @@ static void rtl_hw_initialize(struct rtl
+@@ -5276,7 +5276,7 @@ static void rtl_hw_initialize(struct rtl
case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
rtl_hw_init_8168g(tp);
break;
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5208,6 +5208,33 @@ static int r8169_mdio_write_reg(struct m
+@@ -5209,6 +5209,33 @@ static int r8169_mdio_write_reg(struct m
return 0;
}
static int r8169_mdio_register(struct rtl8169_private *tp)
{
struct pci_dev *pdev = tp->pci_dev;
-@@ -5238,6 +5265,11 @@ static int r8169_mdio_register(struct rt
+@@ -5239,6 +5266,11 @@ static int r8169_mdio_register(struct rt
new_bus->read = r8169_mdio_read_reg;
new_bus->write = r8169_mdio_write_reg;
static const struct {
const char *name;
-@@ -5368,6 +5369,9 @@ static int rtl_jumbo_max(struct rtl8169_
+@@ -5369,6 +5370,9 @@ static int rtl_jumbo_max(struct rtl8169_
/* RTL8168c */
case RTL_GIGA_MAC_VER_18 ... RTL_GIGA_MAC_VER_24:
return JUMBO_6K;
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5406,7 +5406,7 @@ done:
+@@ -5407,7 +5407,7 @@ done:
/* register is set if system vendor successfully tested ASPM 1.2 */
static bool rtl_aspm_is_safe(struct rtl8169_private *tp)
{
}
static void rtl_release_firmware(struct rtl8169_private *tp)
-@@ -5448,9 +5380,9 @@ static bool rtl_aspm_is_safe(struct rtl8
+@@ -5449,9 +5381,9 @@ static bool rtl_aspm_is_safe(struct rtl8
static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
{
struct net_device *dev;
u32 txconfig;
u16 xid;
-@@ -5501,12 +5433,13 @@ static int rtl_init_one(struct pci_dev *
+@@ -5502,12 +5434,13 @@ static int rtl_init_one(struct pci_dev *
xid = (txconfig >> 20) & 0xfcf;
/* Identify chip attached to board */
/* Disable ASPM L1 as that cause random device stop working
* problems as well as full system hangs for some PCIe devices users.
-@@ -5610,8 +5543,6 @@ static int rtl_init_one(struct pci_dev *
+@@ -5611,8 +5544,6 @@ static int rtl_init_one(struct pci_dev *
rtl_set_irq_mask(tp);
tp->counters = dmam_alloc_coherent (&pdev->dev, sizeof(*tp->counters),
&tp->counters_phys_addr,
GFP_KERNEL);
-@@ -5636,7 +5567,7 @@ static int rtl_init_one(struct pci_dev *
+@@ -5637,7 +5568,7 @@ static int rtl_init_one(struct pci_dev *
}
netdev_info(dev, "%s, %pM, XID %03x, IRQ %d\n",
padto = max_t(unsigned int, padto, ETH_ZLEN);
break;
default:
-@@ -5310,7 +5310,7 @@ static void rtl_hw_initialize(struct rtl
+@@ -5311,7 +5311,7 @@ static void rtl_hw_initialize(struct rtl
case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_48:
rtl_hw_init_8168g(tp);
break;
rtl_hw_init_8125(tp);
break;
default:
-@@ -5335,7 +5335,7 @@ static int rtl_jumbo_max(struct rtl8169_
+@@ -5336,7 +5336,7 @@ static int rtl_jumbo_max(struct rtl8169_
case RTL_GIGA_MAC_VER_18 ... RTL_GIGA_MAC_VER_24:
return JUMBO_6K;
/* RTL8125/8126 */
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
-@@ -5047,10 +5047,8 @@ static void rtl_shutdown(struct pci_dev
+@@ -5048,10 +5048,8 @@ static void rtl_shutdown(struct pci_dev
/* Restore original MAC address */
rtl_rar_set(tp, tp->dev->perm_addr);
[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
[RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
-@@ -5293,7 +5290,7 @@ static void rtl_hw_init_8125(struct rtl8
+@@ -5294,7 +5291,7 @@ static void rtl_hw_init_8125(struct rtl8
static void rtl_hw_initialize(struct rtl8169_private *tp)
{
switch (tp->mac_version) {
-LINUX_VERSION-6.6 = .113
-LINUX_KERNEL_HASH-6.6.113 = 1f95cfd2e461d192dd9c6130e47aefc9856529a74ace4191ad8e56ba1849c41e
+LINUX_VERSION-6.6 = .114
+LINUX_KERNEL_HASH-6.6.114 = ca4175a03ce2943ae192d77ad91e37ee292f1f1bb7b2954b062b0ef7eb0cb97c
/**
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
* @t: the outgoing tunnel device
-@@ -1292,6 +1440,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1291,6 +1439,7 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
u8 protocol)
{
struct ip6_tnl *t = netdev_priv(dev);
struct ipv6hdr *ipv6h;
const struct iphdr *iph;
int encap_limit = -1;
-@@ -1391,6 +1540,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1390,6 +1539,18 @@ ipxip6_tnl_xmit(struct sk_buff *skb, str
fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
dsfield = INET_ECN_encapsulate(dsfield, orig_dsfield);
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
return -1;
-@@ -1544,6 +1705,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1543,6 +1704,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
t->parms.link = p->link;
t->parms.proto = p->proto;
t->parms.fwmark = p->fwmark;
dst_cache_reset(&t->dst_cache);
ip6_tnl_link_config(t);
}
-@@ -1578,6 +1747,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1577,6 +1746,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
p->flowinfo = u->flowinfo;
p->link = u->link;
p->proto = u->proto;
memcpy(p->name, u->name, sizeof(u->name));
}
-@@ -1966,6 +2136,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1965,6 +2135,15 @@ static int ip6_tnl_validate(struct nlatt
return 0;
}
static void ip6_tnl_netlink_parms(struct nlattr *data[],
struct __ip6_tnl_parm *parms)
{
-@@ -2003,6 +2182,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -2002,6 +2181,46 @@ static void ip6_tnl_netlink_parms(struct
if (data[IFLA_IPTUN_FWMARK])
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
}
static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
-@@ -2086,6 +2305,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2085,6 +2304,12 @@ static void ip6_tnl_dellink(struct net_d
static size_t ip6_tnl_get_size(const struct net_device *dev)
{
return
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
-@@ -2115,6 +2340,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2114,6 +2339,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(0) +
/* IFLA_IPTUN_FWMARK */
nla_total_size(4) +
0;
}
-@@ -2122,6 +2365,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2121,6 +2364,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms;
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2131,9 +2377,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2130,9 +2376,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2173,6 +2437,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2172,6 +2436,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
-@@ -17732,8 +17732,10 @@ static int tg3_init_one(struct pci_dev *
+@@ -17729,8 +17729,10 @@ static int tg3_init_one(struct pci_dev *
} else
persist_dma_mask = dma_mask = DMA_BIT_MASK(64);