Merge 2bd99aef1b ("tcp: accept bare FIN packets under memory pressure") into android-mainline
Steps on the way to 6.10-rc1 Resolves merge conflicts in: drivers/of/property.c Change-Id: I8a32eebf5235bc79ec6786d4b23e6849e58d00f1 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -66,6 +66,10 @@ properties:
|
||||
Should be phandle/offset pair. The phandle to the syscon node which
|
||||
encompases the GPR register, and the offset of the GPR register.
|
||||
|
||||
nvmem-cells: true
|
||||
|
||||
nvmem-cell-names: true
|
||||
|
||||
snps,rmii_refclk_ext:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
|
||||
@@ -17840,6 +17840,13 @@ F: include/net/psample.h
|
||||
F: include/uapi/linux/psample.h
|
||||
F: net/psample
|
||||
|
||||
PSE NETWORK DRIVER
|
||||
M: Oleksij Rempel <o.rempel@pengutronix.de>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/net/pse-pd/
|
||||
F: drivers/net/pse-pd/
|
||||
|
||||
PSTORE FILESYSTEM
|
||||
M: Kees Cook <keescook@chromium.org>
|
||||
R: Tony Luck <tony.luck@intel.com>
|
||||
|
||||
@@ -232,13 +232,6 @@ static struct spi_driver ksz_spi_driver = {
|
||||
|
||||
module_spi_driver(ksz_spi_driver);
|
||||
|
||||
MODULE_ALIAS("spi:ksz9477");
|
||||
MODULE_ALIAS("spi:ksz9896");
|
||||
MODULE_ALIAS("spi:ksz9897");
|
||||
MODULE_ALIAS("spi:ksz9893");
|
||||
MODULE_ALIAS("spi:ksz9563");
|
||||
MODULE_ALIAS("spi:ksz8563");
|
||||
MODULE_ALIAS("spi:ksz9567");
|
||||
MODULE_ALIAS("spi:lan937x");
|
||||
MODULE_AUTHOR("Tristram Ha <Tristram.Ha@microchip.com>");
|
||||
MODULE_DESCRIPTION("Microchip ksz Series Switch SPI Driver");
|
||||
|
||||
@@ -291,16 +291,12 @@ void ipa_interrupt_deconfig(struct ipa *ipa)
|
||||
/* Initialize the IPA interrupt structure */
|
||||
struct ipa_interrupt *ipa_interrupt_init(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct ipa_interrupt *interrupt;
|
||||
int irq;
|
||||
|
||||
irq = platform_get_irq_byname(pdev, "ipa");
|
||||
if (irq <= 0) {
|
||||
dev_err(dev, "DT error %d getting \"ipa\" IRQ property\n", irq);
|
||||
|
||||
if (irq <= 0)
|
||||
return ERR_PTR(irq ? : -EINVAL);
|
||||
}
|
||||
|
||||
interrupt = kzalloc(sizeof(*interrupt), GFP_KERNEL);
|
||||
if (!interrupt)
|
||||
|
||||
@@ -23,9 +23,6 @@ static int mtk_gephy_write_page(struct phy_device *phydev, int page)
|
||||
|
||||
static void mtk_gephy_config_init(struct phy_device *phydev)
|
||||
{
|
||||
/* Disable EEE */
|
||||
phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV, 0);
|
||||
|
||||
/* Enable HW auto downshift */
|
||||
phy_modify_paged(phydev, MTK_PHY_PAGE_EXTENDED, 0x14, 0, BIT(4));
|
||||
|
||||
|
||||
@@ -31,10 +31,10 @@ pse_reg_ethtool_set_config(struct pse_controller_dev *pcdev, unsigned long id,
|
||||
struct pse_reg_priv *priv = to_pse_reg(pcdev);
|
||||
int ret;
|
||||
|
||||
if (priv->admin_state == config->admin_cotrol)
|
||||
if (priv->admin_state == config->podl_admin_control)
|
||||
return 0;
|
||||
|
||||
switch (config->admin_cotrol) {
|
||||
switch (config->podl_admin_control) {
|
||||
case ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED:
|
||||
ret = regulator_enable(priv->ps);
|
||||
break;
|
||||
@@ -43,14 +43,14 @@ pse_reg_ethtool_set_config(struct pse_controller_dev *pcdev, unsigned long id,
|
||||
break;
|
||||
default:
|
||||
dev_err(pcdev->dev, "Unknown admin state %i\n",
|
||||
config->admin_cotrol);
|
||||
config->podl_admin_control);
|
||||
ret = -ENOTSUPP;
|
||||
}
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
priv->admin_state = config->admin_cotrol;
|
||||
priv->admin_state = config->podl_admin_control;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1253,6 +1253,7 @@ DEFINE_SIMPLE_PROP(panel, "panel", NULL)
|
||||
DEFINE_SIMPLE_PROP(msi_parent, "msi-parent", "#msi-cells")
|
||||
DEFINE_SIMPLE_PROP(post_init_providers, "post-init-providers", NULL)
|
||||
DEFINE_SIMPLE_PROP(access_controllers, "access-controllers", "#access-controller-cells")
|
||||
DEFINE_SIMPLE_PROP(pses, "pses", "#pse-cells")
|
||||
DEFINE_SUFFIX_PROP(regulators, "-supply", NULL)
|
||||
DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells")
|
||||
|
||||
@@ -1358,6 +1359,7 @@ static const struct supplier_bindings of_supplier_bindings[] = {
|
||||
{ .parse_prop = parse_backlight, },
|
||||
{ .parse_prop = parse_panel, },
|
||||
{ .parse_prop = parse_msi_parent, },
|
||||
{ .parse_prop = parse_pses, },
|
||||
{ .parse_prop = parse_gpio_compat, },
|
||||
{ .parse_prop = parse_interrupts, },
|
||||
{ .parse_prop = parse_access_controllers, },
|
||||
|
||||
@@ -15,11 +15,11 @@ struct pse_controller_dev;
|
||||
/**
|
||||
* struct pse_control_config - PSE control/channel configuration.
|
||||
*
|
||||
* @admin_cotrol: set PoDL PSE admin control as described in
|
||||
* @podl_admin_control: set PoDL PSE admin control as described in
|
||||
* IEEE 802.3-2018 30.15.1.2.1 acPoDLPSEAdminControl
|
||||
*/
|
||||
struct pse_control_config {
|
||||
enum ethtool_podl_pse_admin_state admin_cotrol;
|
||||
enum ethtool_podl_pse_admin_state podl_admin_control;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -67,6 +67,7 @@ struct unix_skb_parms {
|
||||
|
||||
struct scm_stat {
|
||||
atomic_t nr_fds;
|
||||
unsigned long nr_unix_fds;
|
||||
};
|
||||
|
||||
#define UNIXCB(skb) (*(struct unix_skb_parms *)&((skb)->cb))
|
||||
|
||||
@@ -130,7 +130,7 @@ ethnl_set_pse(struct ethnl_req_info *req_info, struct genl_info *info)
|
||||
struct phy_device *phydev;
|
||||
|
||||
/* this values are already validated by the ethnl_pse_set_policy */
|
||||
config.admin_cotrol = nla_get_u32(tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL]);
|
||||
config.podl_admin_control = nla_get_u32(tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL]);
|
||||
|
||||
phydev = dev->phydev;
|
||||
if (!phydev) {
|
||||
|
||||
@@ -213,7 +213,6 @@ static int tls_handshake_accept(struct handshake_req *req,
|
||||
if (!hdr)
|
||||
goto out_cancel;
|
||||
|
||||
ret = -EMSGSIZE;
|
||||
ret = nla_put_s32(msg, HANDSHAKE_A_ACCEPT_SOCKFD, fd);
|
||||
if (ret < 0)
|
||||
goto out_cancel;
|
||||
|
||||
+11
-1
@@ -5174,6 +5174,16 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
|
||||
*/
|
||||
if (TCP_SKB_CB(skb)->seq == tp->rcv_nxt) {
|
||||
if (tcp_receive_window(tp) == 0) {
|
||||
/* Some stacks are known to send bare FIN packets
|
||||
* in a loop even if we send RWIN 0 in our ACK.
|
||||
* Accepting this FIN does not hurt memory pressure
|
||||
* because the FIN flag will simply be merged to the
|
||||
* receive queue tail skb in most cases.
|
||||
*/
|
||||
if (!skb->len &&
|
||||
(TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN))
|
||||
goto queue_and_out;
|
||||
|
||||
reason = SKB_DROP_REASON_TCP_ZEROWINDOW;
|
||||
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPZEROWINDOWDROP);
|
||||
goto out_of_window;
|
||||
@@ -5188,7 +5198,7 @@ queue_and_out:
|
||||
inet_csk_schedule_ack(sk);
|
||||
sk->sk_data_ready(sk);
|
||||
|
||||
if (skb_queue_len(&sk->sk_receive_queue)) {
|
||||
if (skb_queue_len(&sk->sk_receive_queue) && skb->len) {
|
||||
reason = SKB_DROP_REASON_PROTO_MEM;
|
||||
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPRCVQDROP);
|
||||
goto drop;
|
||||
|
||||
@@ -901,6 +901,7 @@ static void vti6_dev_setup(struct net_device *dev)
|
||||
{
|
||||
dev->netdev_ops = &vti6_netdev_ops;
|
||||
dev->header_ops = &ip_tunnel_header_ops;
|
||||
dev->needs_free_netdev = true;
|
||||
|
||||
dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
|
||||
dev->type = ARPHRD_TUNNEL6;
|
||||
|
||||
+1
-1
@@ -1719,12 +1719,12 @@ static int unix_accept(struct socket *sock, struct socket *newsock, int flags,
|
||||
}
|
||||
|
||||
tsk = skb->sk;
|
||||
unix_update_edges(unix_sk(tsk));
|
||||
skb_free_datagram(sk, skb);
|
||||
wake_up_interruptible(&unix_sk(sk)->peer_wait);
|
||||
|
||||
/* attach accepted sock to socket */
|
||||
unix_state_lock(tsk);
|
||||
unix_update_edges(unix_sk(tsk));
|
||||
newsock->state = SS_CONNECTED;
|
||||
unix_sock_inherit_flags(sock, newsock);
|
||||
sock_graft(tsk, newsock);
|
||||
|
||||
+16
-4
@@ -209,6 +209,7 @@ void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver)
|
||||
unix_add_edge(fpl, edge);
|
||||
} while (i < fpl->count_unix);
|
||||
|
||||
receiver->scm_stat.nr_unix_fds += fpl->count_unix;
|
||||
WRITE_ONCE(unix_tot_inflight, unix_tot_inflight + fpl->count_unix);
|
||||
out:
|
||||
WRITE_ONCE(fpl->user->unix_inflight, fpl->user->unix_inflight + fpl->count);
|
||||
@@ -222,6 +223,7 @@ out:
|
||||
|
||||
void unix_del_edges(struct scm_fp_list *fpl)
|
||||
{
|
||||
struct unix_sock *receiver;
|
||||
int i = 0;
|
||||
|
||||
spin_lock(&unix_gc_lock);
|
||||
@@ -235,6 +237,8 @@ void unix_del_edges(struct scm_fp_list *fpl)
|
||||
unix_del_edge(fpl, edge);
|
||||
} while (i < fpl->count_unix);
|
||||
|
||||
receiver = fpl->edges[0].successor;
|
||||
receiver->scm_stat.nr_unix_fds -= fpl->count_unix;
|
||||
WRITE_ONCE(unix_tot_inflight, unix_tot_inflight - fpl->count_unix);
|
||||
out:
|
||||
WRITE_ONCE(fpl->user->unix_inflight, fpl->user->unix_inflight - fpl->count);
|
||||
@@ -246,10 +250,18 @@ out:
|
||||
|
||||
void unix_update_edges(struct unix_sock *receiver)
|
||||
{
|
||||
spin_lock(&unix_gc_lock);
|
||||
unix_update_graph(unix_sk(receiver->listener)->vertex);
|
||||
receiver->listener = NULL;
|
||||
spin_unlock(&unix_gc_lock);
|
||||
/* nr_unix_fds is only updated under unix_state_lock().
|
||||
* If it's 0 here, the embryo socket is not part of the
|
||||
* inflight graph, and GC will not see it, so no lock needed.
|
||||
*/
|
||||
if (!receiver->scm_stat.nr_unix_fds) {
|
||||
receiver->listener = NULL;
|
||||
} else {
|
||||
spin_lock(&unix_gc_lock);
|
||||
unix_update_graph(unix_sk(receiver->listener)->vertex);
|
||||
receiver->listener = NULL;
|
||||
spin_unlock(&unix_gc_lock);
|
||||
}
|
||||
}
|
||||
|
||||
int unix_prepare_fpl(struct scm_fp_list *fpl)
|
||||
|
||||
@@ -64,7 +64,7 @@ TARGETS += net/hsr
|
||||
TARGETS += net/mptcp
|
||||
TARGETS += net/openvswitch
|
||||
TARGETS += net/tcp_ao
|
||||
TARGETS += netfilter
|
||||
TARGETS += net/netfilter
|
||||
TARGETS += nsfs
|
||||
TARGETS += perf_events
|
||||
TARGETS += pidfd
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
CONFIG_IPV6=y
|
||||
CONFIG_NETDEVSIM=m
|
||||
@@ -33,7 +33,8 @@ class cmd:
|
||||
if self.proc.returncode != 0 and fail:
|
||||
if len(stderr) > 0 and stderr[-1] == "\n":
|
||||
stderr = stderr[:-1]
|
||||
raise Exception("Command failed: %s\n%s" % (self.proc.args, stderr))
|
||||
raise Exception("Command failed: %s\nSTDOUT: %s\nSTDERR: %s" %
|
||||
(self.proc.args, stdout, stderr))
|
||||
|
||||
|
||||
def ip(args, json=None, ns=None):
|
||||
|
||||
Reference in New Issue
Block a user