mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 22:30:52 +07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixups from David Miller: "Here are the build and merge fixups for the networking stuff" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: phy: micrel.c: Enable ksz9031 energy-detect power-down mode netfilter: merge fixup for "nf_tables_netdev: remove redundant ip_hdr assignment" netfilter: nft_limit: fix divided by zero panic netfilter: fix namespace handling in nf_log_proc_dostring netfilter: xt_hashlimit: Fix link error in 32bit arch because of 64bit division netfilter: accommodate different kconfig in nf_set_hooks_head netfilter: Fix potential null pointer dereference
This commit is contained in:
commit
d230ec72c4
@ -439,6 +439,10 @@ static int ksz9021_config_init(struct phy_device *phydev)
|
||||
#define MII_KSZ9031RN_TX_DATA_PAD_SKEW 6
|
||||
#define MII_KSZ9031RN_CLK_PAD_SKEW 8
|
||||
|
||||
/* MMD Address 0x1C */
|
||||
#define MII_KSZ9031RN_EDPD 0x23
|
||||
#define MII_KSZ9031RN_EDPD_ENABLE BIT(0)
|
||||
|
||||
static int ksz9031_extended_write(struct phy_device *phydev,
|
||||
u8 mode, u32 dev_addr, u32 regnum, u16 val)
|
||||
{
|
||||
@ -510,6 +514,18 @@ static int ksz9031_center_flp_timing(struct phy_device *phydev)
|
||||
return genphy_restart_aneg(phydev);
|
||||
}
|
||||
|
||||
/* Enable energy-detect power-down mode */
|
||||
static int ksz9031_enable_edpd(struct phy_device *phydev)
|
||||
{
|
||||
int reg;
|
||||
|
||||
reg = ksz9031_extended_read(phydev, OP_DATA, 0x1C, MII_KSZ9031RN_EDPD);
|
||||
if (reg < 0)
|
||||
return reg;
|
||||
return ksz9031_extended_write(phydev, OP_DATA, 0x1C, MII_KSZ9031RN_EDPD,
|
||||
reg | MII_KSZ9031RN_EDPD_ENABLE);
|
||||
}
|
||||
|
||||
static int ksz9031_config_init(struct phy_device *phydev)
|
||||
{
|
||||
const struct device *dev = &phydev->mdio.dev;
|
||||
@ -525,6 +541,11 @@ static int ksz9031_config_init(struct phy_device *phydev)
|
||||
};
|
||||
static const char *control_skews[2] = {"txen-skew-ps", "rxdv-skew-ps"};
|
||||
const struct device *dev_walker;
|
||||
int result;
|
||||
|
||||
result = ksz9031_enable_edpd(phydev);
|
||||
if (result < 0)
|
||||
return result;
|
||||
|
||||
/* The Micrel driver has a deprecated option to place phy OF
|
||||
* properties in the MAC node. Walk up the tree of devices to
|
||||
|
@ -33,7 +33,6 @@ __nft_set_pktinfo_ipv4_validate(struct nft_pktinfo *pkt,
|
||||
if (!iph)
|
||||
return -1;
|
||||
|
||||
iph = ip_hdr(skb);
|
||||
if (iph->ihl < 5 || iph->version != 4)
|
||||
return -1;
|
||||
|
||||
|
@ -90,10 +90,12 @@ static void nf_set_hooks_head(struct net *net, const struct nf_hook_ops *reg,
|
||||
{
|
||||
switch (reg->pf) {
|
||||
case NFPROTO_NETDEV:
|
||||
#ifdef CONFIG_NETFILTER_INGRESS
|
||||
/* We already checked in nf_register_net_hook() that this is
|
||||
* used from ingress.
|
||||
*/
|
||||
rcu_assign_pointer(reg->dev->nf_hooks_ingress, entry);
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
rcu_assign_pointer(net->nf.hooks[reg->pf][reg->hooknum],
|
||||
@ -107,10 +109,15 @@ int nf_register_net_hook(struct net *net, const struct nf_hook_ops *reg)
|
||||
struct nf_hook_entry *hooks_entry;
|
||||
struct nf_hook_entry *entry;
|
||||
|
||||
if (reg->pf == NFPROTO_NETDEV &&
|
||||
(reg->hooknum != NF_NETDEV_INGRESS ||
|
||||
!reg->dev || dev_net(reg->dev) != net))
|
||||
return -EINVAL;
|
||||
if (reg->pf == NFPROTO_NETDEV) {
|
||||
#ifndef CONFIG_NETFILTER_INGRESS
|
||||
if (reg->hooknum == NF_NETDEV_INGRESS)
|
||||
return -EOPNOTSUPP;
|
||||
#endif
|
||||
if (reg->hooknum != NF_NETDEV_INGRESS ||
|
||||
!reg->dev || dev_net(reg->dev) != net)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
entry = kmalloc(sizeof(*entry), GFP_KERNEL);
|
||||
if (!entry)
|
||||
@ -160,7 +167,7 @@ void nf_unregister_net_hook(struct net *net, const struct nf_hook_ops *reg)
|
||||
|
||||
mutex_lock(&nf_hook_mutex);
|
||||
hooks_entry = nf_hook_entry_head(net, reg);
|
||||
if (hooks_entry->orig_ops == reg) {
|
||||
if (hooks_entry && hooks_entry->orig_ops == reg) {
|
||||
nf_set_hooks_head(net, reg,
|
||||
nf_entry_dereference(hooks_entry->next));
|
||||
goto unlock;
|
||||
|
@ -422,7 +422,7 @@ static int nf_log_proc_dostring(struct ctl_table *table, int write,
|
||||
char buf[NFLOGGER_NAME_LEN];
|
||||
int r = 0;
|
||||
int tindex = (unsigned long)table->extra1;
|
||||
struct net *net = current->nsproxy->net_ns;
|
||||
struct net *net = table->extra2;
|
||||
|
||||
if (write) {
|
||||
struct ctl_table tmp = *table;
|
||||
@ -476,7 +476,6 @@ static int netfilter_log_sysctl_init(struct net *net)
|
||||
3, "%d", i);
|
||||
nf_log_sysctl_table[i].procname =
|
||||
nf_log_sysctl_fnames[i];
|
||||
nf_log_sysctl_table[i].data = NULL;
|
||||
nf_log_sysctl_table[i].maxlen = NFLOGGER_NAME_LEN;
|
||||
nf_log_sysctl_table[i].mode = 0644;
|
||||
nf_log_sysctl_table[i].proc_handler =
|
||||
@ -486,6 +485,9 @@ static int netfilter_log_sysctl_init(struct net *net)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = NFPROTO_UNSPEC; i < NFPROTO_NUMPROTO; i++)
|
||||
table[i].extra2 = net;
|
||||
|
||||
net->nf.nf_log_dir_header = register_net_sysctl(net,
|
||||
"net/netfilter/nf_log",
|
||||
table);
|
||||
|
@ -145,7 +145,7 @@ static int nft_limit_pkts_init(const struct nft_ctx *ctx,
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
priv->cost = div_u64(priv->limit.nsecs, priv->limit.rate);
|
||||
priv->cost = div64_u64(priv->limit.nsecs, priv->limit.rate);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -170,7 +170,7 @@ static void nft_limit_pkt_bytes_eval(const struct nft_expr *expr,
|
||||
const struct nft_pktinfo *pkt)
|
||||
{
|
||||
struct nft_limit *priv = nft_expr_priv(expr);
|
||||
u64 cost = div_u64(priv->nsecs * pkt->skb->len, priv->rate);
|
||||
u64 cost = div64_u64(priv->nsecs * pkt->skb->len, priv->rate);
|
||||
|
||||
if (nft_limit_eval(priv, cost))
|
||||
regs->verdict.code = NFT_BREAK;
|
||||
|
@ -467,17 +467,18 @@ static u64 user2credits(u64 user, int revision)
|
||||
/* If multiplying would overflow... */
|
||||
if (user > 0xFFFFFFFF / (HZ*CREDITS_PER_JIFFY_v1))
|
||||
/* Divide first. */
|
||||
return (user / XT_HASHLIMIT_SCALE) *\
|
||||
HZ * CREDITS_PER_JIFFY_v1;
|
||||
return div64_u64(user, XT_HASHLIMIT_SCALE)
|
||||
* HZ * CREDITS_PER_JIFFY_v1;
|
||||
|
||||
return (user * HZ * CREDITS_PER_JIFFY_v1) \
|
||||
/ XT_HASHLIMIT_SCALE;
|
||||
return div64_u64(user * HZ * CREDITS_PER_JIFFY_v1,
|
||||
XT_HASHLIMIT_SCALE);
|
||||
} else {
|
||||
if (user > 0xFFFFFFFFFFFFFFFF / (HZ*CREDITS_PER_JIFFY))
|
||||
return (user / XT_HASHLIMIT_SCALE_v2) *\
|
||||
HZ * CREDITS_PER_JIFFY;
|
||||
return div64_u64(user, XT_HASHLIMIT_SCALE_v2)
|
||||
* HZ * CREDITS_PER_JIFFY;
|
||||
|
||||
return (user * HZ * CREDITS_PER_JIFFY) / XT_HASHLIMIT_SCALE_v2;
|
||||
return div64_u64(user * HZ * CREDITS_PER_JIFFY,
|
||||
XT_HASHLIMIT_SCALE_v2);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user