From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Eli Cohen <elic@nvidia.com>,
Mark Bloch <mbloch@nvidia.com>,
Saeed Mahameed <saeedm@nvidia.com>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.0 031/157] net/mlx5: Lag, avoid lockdep warnings
Date: Mon, 12 Dec 2022 14:16:19 +0100 [thread overview]
Message-ID: <20221212130935.774327614@linuxfoundation.org> (raw)
In-Reply-To: <20221212130934.337225088@linuxfoundation.org>
From: Eli Cohen <elic@nvidia.com>
[ Upstream commit 0d4e8ed139d871fcb2844dd71075997753baeec8 ]
ldev->lock is used to serialize lag change operations. Since multiport
eswtich functionality was added, we now change the mode dynamically.
However, acquiring ldev->lock is not allowed as it could possibly lead
to a deadlock as reported by the lockdep mechanism.
[ 836.154963] WARNING: possible circular locking dependency detected
[ 836.155850] 5.19.0-rc5_net_56b7df2 #1 Not tainted
[ 836.156549] ------------------------------------------------------
[ 836.157418] handler1/12198 is trying to acquire lock:
[ 836.158178] ffff888187d52b58 (&ldev->lock){+.+.}-{3:3}, at: mlx5_lag_do_mirred+0x3b/0x70 [mlx5_core]
[ 836.159575]
[ 836.159575] but task is already holding lock:
[ 836.160474] ffff8881d4de2930 (&block->cb_lock){++++}-{3:3}, at: tc_setup_cb_add+0x5b/0x200
[ 836.161669] which lock already depends on the new lock.
[ 836.162905]
[ 836.162905] the existing dependency chain (in reverse order) is:
[ 836.164008] -> #3 (&block->cb_lock){++++}-{3:3}:
[ 836.164946] down_write+0x25/0x60
[ 836.165548] tcf_block_get_ext+0x1c6/0x5d0
[ 836.166253] ingress_init+0x74/0xa0 [sch_ingress]
[ 836.167028] qdisc_create.constprop.0+0x130/0x5e0
[ 836.167805] tc_modify_qdisc+0x481/0x9f0
[ 836.168490] rtnetlink_rcv_msg+0x16e/0x5a0
[ 836.169189] netlink_rcv_skb+0x4e/0xf0
[ 836.169861] netlink_unicast+0x190/0x250
[ 836.170543] netlink_sendmsg+0x243/0x4b0
[ 836.171226] sock_sendmsg+0x33/0x40
[ 836.171860] ____sys_sendmsg+0x1d1/0x1f0
[ 836.172535] ___sys_sendmsg+0xab/0xf0
[ 836.173183] __sys_sendmsg+0x51/0x90
[ 836.173836] do_syscall_64+0x3d/0x90
[ 836.174471] entry_SYSCALL_64_after_hwframe+0x46/0xb0
[ 836.175282]
[ 836.175282] -> #2 (rtnl_mutex){+.+.}-{3:3}:
[ 836.176190] __mutex_lock+0x6b/0xf80
[ 836.176830] register_netdevice_notifier+0x21/0x120
[ 836.177631] rtnetlink_init+0x2d/0x1e9
[ 836.178289] netlink_proto_init+0x163/0x179
[ 836.178994] do_one_initcall+0x63/0x300
[ 836.179672] kernel_init_freeable+0x2cb/0x31b
[ 836.180403] kernel_init+0x17/0x140
[ 836.181035] ret_from_fork+0x1f/0x30
[ 836.181687] -> #1 (pernet_ops_rwsem){+.+.}-{3:3}:
[ 836.182628] down_write+0x25/0x60
[ 836.183235] unregister_netdevice_notifier+0x1c/0xb0
[ 836.184029] mlx5_ib_roce_cleanup+0x94/0x120 [mlx5_ib]
[ 836.184855] __mlx5_ib_remove+0x35/0x60 [mlx5_ib]
[ 836.185637] mlx5_eswitch_unregister_vport_reps+0x22f/0x440 [mlx5_core]
[ 836.186698] auxiliary_bus_remove+0x18/0x30
[ 836.187409] device_release_driver_internal+0x1f6/0x270
[ 836.188253] bus_remove_device+0xef/0x160
[ 836.188939] device_del+0x18b/0x3f0
[ 836.189562] mlx5_rescan_drivers_locked+0xd6/0x2d0 [mlx5_core]
[ 836.190516] mlx5_lag_remove_devices+0x69/0xe0 [mlx5_core]
[ 836.191414] mlx5_do_bond_work+0x441/0x620 [mlx5_core]
[ 836.192278] process_one_work+0x25c/0x590
[ 836.192963] worker_thread+0x4f/0x3d0
[ 836.193609] kthread+0xcb/0xf0
[ 836.194189] ret_from_fork+0x1f/0x30
[ 836.194826] -> #0 (&ldev->lock){+.+.}-{3:3}:
[ 836.195734] __lock_acquire+0x15b8/0x2a10
[ 836.196426] lock_acquire+0xce/0x2d0
[ 836.197057] __mutex_lock+0x6b/0xf80
[ 836.197708] mlx5_lag_do_mirred+0x3b/0x70 [mlx5_core]
[ 836.198575] tc_act_parse_mirred+0x25b/0x800 [mlx5_core]
[ 836.199467] parse_tc_actions+0x168/0x5a0 [mlx5_core]
[ 836.200340] __mlx5e_add_fdb_flow+0x263/0x480 [mlx5_core]
[ 836.201241] mlx5e_configure_flower+0x8a0/0x1820 [mlx5_core]
[ 836.202187] tc_setup_cb_add+0xd7/0x200
[ 836.202856] fl_hw_replace_filter+0x14c/0x1f0 [cls_flower]
[ 836.203739] fl_change+0xbbe/0x1730 [cls_flower]
[ 836.204501] tc_new_tfilter+0x407/0xd90
[ 836.205168] rtnetlink_rcv_msg+0x406/0x5a0
[ 836.205877] netlink_rcv_skb+0x4e/0xf0
[ 836.206535] netlink_unicast+0x190/0x250
[ 836.207217] netlink_sendmsg+0x243/0x4b0
[ 836.207915] sock_sendmsg+0x33/0x40
[ 836.208538] ____sys_sendmsg+0x1d1/0x1f0
[ 836.209219] ___sys_sendmsg+0xab/0xf0
[ 836.209878] __sys_sendmsg+0x51/0x90
[ 836.210510] do_syscall_64+0x3d/0x90
[ 836.211137] entry_SYSCALL_64_after_hwframe+0x46/0xb0
[ 836.211954] other info that might help us debug this:
[ 836.213174] Chain exists of:
[ 836.213174] &ldev->lock --> rtnl_mutex --> &block->cb_lock
836.214650] Possible unsafe locking scenario:
[ 836.214650]
[ 836.215574] CPU0 CPU1
[ 836.216255] ---- ----
[ 836.216943] lock(&block->cb_lock);
[ 836.217518] lock(rtnl_mutex);
[ 836.218348] lock(&block->cb_lock);
[ 836.219212] lock(&ldev->lock);
[ 836.219758]
[ 836.219758] *** DEADLOCK ***
[ 836.219758]
[ 836.220747] 2 locks held by handler1/12198:
[ 836.221390] #0: ffff8881d4de2930 (&block->cb_lock){++++}-{3:3}, at: tc_setup_cb_add+0x5b/0x200
[ 836.222646] #1: ffff88810c9a92c0 (&esw->mode_lock){++++}-{3:3}, at: mlx5_esw_hold+0x39/0x50 [mlx5_core]
[ 836.224063] stack backtrace:
[ 836.224799] CPU: 6 PID: 12198 Comm: handler1 Not tainted 5.19.0-rc5_net_56b7df2 #1
[ 836.225923] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
[ 836.227476] Call Trace:
[ 836.227929] <TASK>
[ 836.228332] dump_stack_lvl+0x57/0x7d
[ 836.228924] check_noncircular+0x104/0x120
[ 836.229562] __lock_acquire+0x15b8/0x2a10
[ 836.230201] lock_acquire+0xce/0x2d0
[ 836.230776] ? mlx5_lag_do_mirred+0x3b/0x70 [mlx5_core]
[ 836.231614] ? find_held_lock+0x2b/0x80
[ 836.232221] __mutex_lock+0x6b/0xf80
[ 836.232799] ? mlx5_lag_do_mirred+0x3b/0x70 [mlx5_core]
[ 836.233636] ? mlx5_lag_do_mirred+0x3b/0x70 [mlx5_core]
[ 836.234451] ? xa_load+0xc3/0x190
[ 836.234995] mlx5_lag_do_mirred+0x3b/0x70 [mlx5_core]
[ 836.235803] tc_act_parse_mirred+0x25b/0x800 [mlx5_core]
[ 836.236636] ? tc_act_can_offload_mirred+0x135/0x210 [mlx5_core]
[ 836.237550] parse_tc_actions+0x168/0x5a0 [mlx5_core]
[ 836.238364] __mlx5e_add_fdb_flow+0x263/0x480 [mlx5_core]
[ 836.239202] mlx5e_configure_flower+0x8a0/0x1820 [mlx5_core]
[ 836.240076] ? lock_acquire+0xce/0x2d0
[ 836.240668] ? tc_setup_cb_add+0x5b/0x200
[ 836.241294] tc_setup_cb_add+0xd7/0x200
[ 836.241917] fl_hw_replace_filter+0x14c/0x1f0 [cls_flower]
[ 836.242709] fl_change+0xbbe/0x1730 [cls_flower]
[ 836.243408] tc_new_tfilter+0x407/0xd90
[ 836.244043] ? tc_del_tfilter+0x880/0x880
[ 836.244672] rtnetlink_rcv_msg+0x406/0x5a0
[ 836.245310] ? netlink_deliver_tap+0x7a/0x4b0
[ 836.245991] ? if_nlmsg_stats_size+0x2b0/0x2b0
[ 836.246675] netlink_rcv_skb+0x4e/0xf0
[ 836.258046] netlink_unicast+0x190/0x250
[ 836.258669] netlink_sendmsg+0x243/0x4b0
[ 836.259288] sock_sendmsg+0x33/0x40
[ 836.259857] ____sys_sendmsg+0x1d1/0x1f0
[ 836.260473] ___sys_sendmsg+0xab/0xf0
[ 836.261064] ? lock_acquire+0xce/0x2d0
[ 836.261669] ? find_held_lock+0x2b/0x80
[ 836.262272] ? __fget_files+0xb9/0x190
[ 836.262871] ? __fget_files+0xd3/0x190
[ 836.263462] __sys_sendmsg+0x51/0x90
[ 836.264064] do_syscall_64+0x3d/0x90
[ 836.264652] entry_SYSCALL_64_after_hwframe+0x46/0xb0
[ 836.265425] RIP: 0033:0x7fdbe5e2677d
[ 836.266012] Code: 28 89 54 24 1c 48 89 74 24 10 89 7c 24 08 e8 ba ee
ff ff 8b 54 24 1c 48 8b 74 24 10 41 89 c0 8b 7c 24 08 b8 2e 00 00 00 0f
05 <48> 3d 00 f0 ff ff 77 33 44 89 c7 48 89 44 24 08 e8 ee ee ff ff 48
[ 836.268485] RSP: 002b:00007fdbe48a75a0 EFLAGS: 00000293 ORIG_RAX: 000000000000002e
[ 836.269598] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007fdbe5e2677d
[ 836.270576] RDX: 0000000000000000 RSI: 00007fdbe48a7640 RDI: 000000000000003c
[ 836.271565] RBP: 00007fdbe48a8368 R08: 0000000000000000 R09: 0000000000000000
[ 836.272546] R10: 00007fdbe48a84b0 R11: 0000000000000293 R12: 0000557bd17dc860
[ 836.273527] R13: 0000000000000000 R14: 0000557bd17dc860 R15: 00007fdbe48a7640
[ 836.274521] </TASK>
To avoid using mode holding ldev->lock in the configure flow, we queue a
work to the lag workqueue and cease wait on a completion object.
In addition, we remove the lock from mlx5_lag_do_mirred() since it is
not really protecting anything.
It should be noted that an actual deadlock has not been observed.
Signed-off-by: Eli Cohen <elic@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
.../net/ethernet/mellanox/mlx5/core/lag/lag.c | 3 +-
.../net/ethernet/mellanox/mlx5/core/lag/lag.h | 14 ++-
.../ethernet/mellanox/mlx5/core/lag/mpesw.c | 100 +++++++++++-------
.../ethernet/mellanox/mlx5/core/lag/mpesw.h | 1 -
4 files changed, 78 insertions(+), 40 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c b/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
index 48f86e12f5c0..bbe810f3b373 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
@@ -201,9 +201,8 @@ static void mlx5_ldev_free(struct kref *ref)
if (ldev->nb.notifier_call)
unregister_netdevice_notifier_net(&init_net, &ldev->nb);
mlx5_lag_mp_cleanup(ldev);
- mlx5_lag_mpesw_cleanup(ldev);
- cancel_work_sync(&ldev->mpesw_work);
destroy_workqueue(ldev->wq);
+ mlx5_lag_mpesw_cleanup(ldev);
mutex_destroy(&ldev->lock);
kfree(ldev);
}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h b/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h
index ce2ce8ccbd70..f30ac2de639f 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h
@@ -50,6 +50,19 @@ struct lag_tracker {
enum netdev_lag_hash hash_type;
};
+enum mpesw_op {
+ MLX5_MPESW_OP_ENABLE,
+ MLX5_MPESW_OP_DISABLE,
+};
+
+struct mlx5_mpesw_work_st {
+ struct work_struct work;
+ struct mlx5_lag *lag;
+ enum mpesw_op op;
+ struct completion comp;
+ int result;
+};
+
/* LAG data of a ConnectX card.
* It serves both its phys functions.
*/
@@ -66,7 +79,6 @@ struct mlx5_lag {
struct lag_tracker tracker;
struct workqueue_struct *wq;
struct delayed_work bond_work;
- struct work_struct mpesw_work;
struct notifier_block nb;
struct lag_mp lag_mp;
struct mlx5_lag_port_sel port_sel;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.c b/drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.c
index f643202b29c6..c17e8f1ec914 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.c
@@ -7,63 +7,95 @@
#include "eswitch.h"
#include "lib/mlx5.h"
-void mlx5_mpesw_work(struct work_struct *work)
+static int add_mpesw_rule(struct mlx5_lag *ldev)
{
- struct mlx5_lag *ldev = container_of(work, struct mlx5_lag, mpesw_work);
+ struct mlx5_core_dev *dev = ldev->pf[MLX5_LAG_P1].dev;
+ int err;
- mutex_lock(&ldev->lock);
- mlx5_disable_lag(ldev);
- mutex_unlock(&ldev->lock);
-}
+ if (atomic_add_return(1, &ldev->lag_mpesw.mpesw_rule_count) != 1)
+ return 0;
-static void mlx5_lag_disable_mpesw(struct mlx5_core_dev *dev)
-{
- struct mlx5_lag *ldev = dev->priv.lag;
+ if (ldev->mode != MLX5_LAG_MODE_NONE) {
+ err = -EINVAL;
+ goto out_err;
+ }
- if (!queue_work(ldev->wq, &ldev->mpesw_work))
- mlx5_core_warn(dev, "failed to queue work\n");
+ err = mlx5_activate_lag(ldev, NULL, MLX5_LAG_MODE_MPESW, false);
+ if (err) {
+ mlx5_core_warn(dev, "Failed to create LAG in MPESW mode (%d)\n", err);
+ goto out_err;
+ }
+
+ return 0;
+
+out_err:
+ atomic_dec(&ldev->lag_mpesw.mpesw_rule_count);
+ return err;
}
-void mlx5_lag_del_mpesw_rule(struct mlx5_core_dev *dev)
+static void del_mpesw_rule(struct mlx5_lag *ldev)
{
- struct mlx5_lag *ldev = dev->priv.lag;
+ if (!atomic_dec_return(&ldev->lag_mpesw.mpesw_rule_count) &&
+ ldev->mode == MLX5_LAG_MODE_MPESW)
+ mlx5_disable_lag(ldev);
+}
- if (!ldev)
- return;
+static void mlx5_mpesw_work(struct work_struct *work)
+{
+ struct mlx5_mpesw_work_st *mpesww = container_of(work, struct mlx5_mpesw_work_st, work);
+ struct mlx5_lag *ldev = mpesww->lag;
mutex_lock(&ldev->lock);
- if (!atomic_dec_return(&ldev->lag_mpesw.mpesw_rule_count) &&
- ldev->mode == MLX5_LAG_MODE_MPESW)
- mlx5_lag_disable_mpesw(dev);
+ if (mpesww->op == MLX5_MPESW_OP_ENABLE)
+ mpesww->result = add_mpesw_rule(ldev);
+ else if (mpesww->op == MLX5_MPESW_OP_DISABLE)
+ del_mpesw_rule(ldev);
mutex_unlock(&ldev->lock);
+
+ complete(&mpesww->comp);
}
-int mlx5_lag_add_mpesw_rule(struct mlx5_core_dev *dev)
+static int mlx5_lag_mpesw_queue_work(struct mlx5_core_dev *dev,
+ enum mpesw_op op)
{
struct mlx5_lag *ldev = dev->priv.lag;
+ struct mlx5_mpesw_work_st *work;
int err = 0;
if (!ldev)
return 0;
- mutex_lock(&ldev->lock);
- if (atomic_add_return(1, &ldev->lag_mpesw.mpesw_rule_count) != 1)
- goto out;
+ work = kzalloc(sizeof(*work), GFP_KERNEL);
+ if (!work)
+ return -ENOMEM;
- if (ldev->mode != MLX5_LAG_MODE_NONE) {
+ INIT_WORK(&work->work, mlx5_mpesw_work);
+ init_completion(&work->comp);
+ work->op = op;
+ work->lag = ldev;
+
+ if (!queue_work(ldev->wq, &work->work)) {
+ mlx5_core_warn(dev, "failed to queue mpesw work\n");
err = -EINVAL;
goto out;
}
-
- err = mlx5_activate_lag(ldev, NULL, MLX5_LAG_MODE_MPESW, false);
- if (err)
- mlx5_core_warn(dev, "Failed to create LAG in MPESW mode (%d)\n", err);
-
+ wait_for_completion(&work->comp);
+ err = work->result;
out:
- mutex_unlock(&ldev->lock);
+ kfree(work);
return err;
}
+void mlx5_lag_del_mpesw_rule(struct mlx5_core_dev *dev)
+{
+ mlx5_lag_mpesw_queue_work(dev, MLX5_MPESW_OP_DISABLE);
+}
+
+int mlx5_lag_add_mpesw_rule(struct mlx5_core_dev *dev)
+{
+ return mlx5_lag_mpesw_queue_work(dev, MLX5_MPESW_OP_ENABLE);
+}
+
int mlx5_lag_do_mirred(struct mlx5_core_dev *mdev, struct net_device *out_dev)
{
struct mlx5_lag *ldev = mdev->priv.lag;
@@ -71,12 +103,9 @@ int mlx5_lag_do_mirred(struct mlx5_core_dev *mdev, struct net_device *out_dev)
if (!netif_is_bond_master(out_dev) || !ldev)
return 0;
- mutex_lock(&ldev->lock);
- if (ldev->mode == MLX5_LAG_MODE_MPESW) {
- mutex_unlock(&ldev->lock);
+ if (ldev->mode == MLX5_LAG_MODE_MPESW)
return -EOPNOTSUPP;
- }
- mutex_unlock(&ldev->lock);
+
return 0;
}
@@ -90,11 +119,10 @@ bool mlx5_lag_mpesw_is_activated(struct mlx5_core_dev *dev)
void mlx5_lag_mpesw_init(struct mlx5_lag *ldev)
{
- INIT_WORK(&ldev->mpesw_work, mlx5_mpesw_work);
atomic_set(&ldev->lag_mpesw.mpesw_rule_count, 0);
}
void mlx5_lag_mpesw_cleanup(struct mlx5_lag *ldev)
{
- cancel_delayed_work_sync(&ldev->bond_work);
+ WARN_ON(atomic_read(&ldev->lag_mpesw.mpesw_rule_count));
}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.h b/drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.h
index be4abcb8fcd5..88e8daffcf92 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.h
@@ -12,7 +12,6 @@ struct lag_mpesw {
atomic_t mpesw_rule_count;
};
-void mlx5_mpesw_work(struct work_struct *work);
int mlx5_lag_do_mirred(struct mlx5_core_dev *mdev, struct net_device *out_dev);
bool mlx5_lag_mpesw_is_activated(struct mlx5_core_dev *dev);
#if IS_ENABLED(CONFIG_MLX5_ESWITCH)
--
2.35.1
next prev parent reply other threads:[~2022-12-12 13:39 UTC|newest]
Thread overview: 170+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-12 13:15 [PATCH 6.0 000/157] 6.0.13-rc1 review Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 001/157] madvise: use zap_page_range_single for madvise dontneed Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 002/157] drm/i915: Remove non-existent pipes from bigjoiner pipe mask Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 003/157] arm64: dts: rockchip: Fix gmac failure of rgmii-id from rk3566-roc-pc Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 004/157] arm64: dts: rockchip: Fix i2c3 pinctrl on rk3566-roc-pc Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 005/157] arm64: dts: rockchip: remove i2c5 from rk3566-roc-pc Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 006/157] arm64: dts: rockchip: keep I2S1 disabled for GPIO function on ROCK Pi 4 series Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 007/157] arm64: dts: rockchip: fix node name for hym8563 rtc Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 008/157] arm: " Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 009/157] arm: dts: rockchip: remove clock-frequency from rtc Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 010/157] ARM: dts: rockchip: fix adc-keys sub node names Greg Kroah-Hartman
2022-12-12 13:15 ` [PATCH 6.0 011/157] arm64: " Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 012/157] ARM: dts: rockchip: fix ir-receiver " Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 013/157] arm64: " Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 014/157] ARM: dts: rockchip: rk3188: fix lcdc1-rgb24 node name Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 015/157] fs: use acquire ordering in __fget_light() Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 016/157] ARM: 9251/1: perf: Fix stacktraces for tracepoint events in THUMB2 kernels Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 017/157] ARM: 9266/1: mm: fix no-MMU ZERO_PAGE() implementation Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 018/157] ASoC: wm8962: Wait for updated value of WM8962_CLOCKING1 register Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 019/157] spi: mediatek: Fix DEVAPC Violation at KO Remove Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 020/157] ARM: dts: rockchip: disable arm_global_timer on rk3066 and rk3188 Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 021/157] ASoC: rt711-sdca: fix the latency time of clock stop prepare state machine transitions Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 022/157] 9p/fd: Use P9_HDRSZ for header size Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 023/157] regulator: slg51000: Wait after asserting CS pin Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 024/157] ALSA: seq: Fix function prototype mismatch in snd_seq_expand_var_event Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 025/157] LoongArch: Makefile: Use "grep -E" instead of "egrep" Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 026/157] LoongArch: Combine acpi_boot_table_init() and acpi_boot_init() Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 027/157] LoongArch: Set _PAGE_DIRTY only if _PAGE_MODIFIED is set in {pmd,pte}_mkwrite() Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 028/157] LoongArch: Fix unsigned comparison with less than zero Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 029/157] selftests/net: Find nettest in current directory Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 030/157] btrfs: send: avoid unaligned encoded writes when attempting to clone range Greg Kroah-Hartman
2022-12-12 13:16 ` Greg Kroah-Hartman [this message]
2022-12-12 13:16 ` [PATCH 6.0 032/157] ASoC: soc-pcm: Add NULL check in BE reparenting Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 033/157] regulator: twl6030: fix get status of twl6032 regulators Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 034/157] fbcon: Use kzalloc() in fbcon_prepare_logo() Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 035/157] usb: dwc3: gadget: Disable GUSB2PHYCFG.SUSPHY for End Transfer Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 036/157] 9p/xen: check logical size for buffer size Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 037/157] net: usb: qmi_wwan: add u-blox 0x1342 composition Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 038/157] drm/amd/display: Use viewport height for subvp mall allocation size Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 039/157] drm/amd/display: Avoid setting pixel rate divider to N/A Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 040/157] drm/amd/display: Use new num clk levels struct for max mclk index Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 041/157] drm/amdgpu: fix use-after-free during gpu recovery Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 042/157] mm/khugepaged: take the right locks for page table retraction Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 043/157] mm/khugepaged: fix GUP-fast interaction by sending IPI Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 044/157] mm/khugepaged: invoke MMU notifiers in shmem/file collapse paths Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 045/157] hugetlb: dont delete vma_lock in hugetlb MADV_DONTNEED processing Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 046/157] ALSA: hda/realtek: More robust component matching for CS35L41 Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 047/157] crypto: ccp - Add a quirk to firmware update Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 048/157] soundwire: dmi-quirks: add remapping for HP Omen 16-k0005TX Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 049/157] platform/x86: asus-wmi: Adjust tablet/lidflip handling to use enum Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 050/157] platform/x86: asus-wmi: Add support for ROG X13 tablet mode Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 051/157] xen/netback: Ensure protocol headers dont fall in the non-linear area Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 052/157] xen/netback: dont call kfree_skb() with interrupts disabled Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 053/157] media: videobuf2-core: take mmap_lock in vb2_get_unmapped_area() Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 054/157] fscache: Fix oops due to race with cookie_lru and use_cookie Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 055/157] soundwire: intel: Initialize clock stop timeout Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 056/157] Revert "ARM: dts: imx7: Fix NAND controller size-cells" Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 057/157] media: v4l2-dv-timings.c: fix too strict blanking sanity checks Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 058/157] memcg: fix possible use-after-free in memcg_write_event_control() Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 059/157] mm/gup: fix gup_pud_range() for dax Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 060/157] tmpfs: fix data loss from failed fallocate Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 061/157] Bluetooth: btusb: Fix CSR clones again by re-adding ERR_DATA_REPORTING quirk Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 062/157] Bluetooth: btusb: Add debug message for CSR controllers Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 063/157] Bluetooth: Fix crash when replugging CSR fake controllers Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 064/157] selftests/tls: Fix tls selftests dependency to correct algorithm Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 065/157] net: mana: Fix race on per-CQ variable napi work_done Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 066/157] io_uring: Fix a null-ptr-deref in io_tctx_exit_cb() Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 067/157] HID: uclogic: Fix frame templates for big endian architectures Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 068/157] KVM: s390: vsie: Fix the initialization of the epoch extension (epdx) field Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 069/157] drm/vmwgfx: Dont use screen objects when SEV is active Greg Kroah-Hartman
2022-12-12 13:16 ` [PATCH 6.0 070/157] can: can327: flush TX_work on ldisc .close() Greg Kroah-Hartman
2022-12-12 21:11 ` patchwork-bot+netdevbpf
2022-12-12 13:16 ` [PATCH 6.0 071/157] can: slcan: fix freed work crash Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 072/157] can: esd_usb: Allow REC and TEC to return to zero Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 073/157] drm/amdgpu/sdma_v4_0: turn off SDMA ring buffer in the s2idle suspend Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 074/157] drm/amd/display: fix array index out of bound error in DCN32 DML Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 075/157] drm/shmem-helper: Remove errant put in error path Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 076/157] drm/shmem-helper: Avoid vm_open error paths Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 077/157] net: dsa: sja1105: avoid out of bounds access in sja1105_init_l2_policing() Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 078/157] HID: usbhid: Add ALWAYS_POLL quirk for some mice Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 079/157] HID: fix I2C_HID not selected when I2C_HID_OF_ELAN is Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 080/157] HID: uclogic: Add HID_QUIRK_HIDINPUT_FORCE quirk Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 081/157] HID: hid-lg4ff: Add check for empty lbuf Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 082/157] HID: core: fix shift-out-of-bounds in hid_report_raw_event Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 083/157] HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10 Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 084/157] ARM: 9278/1: kfence: only handle translation faults Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 085/157] can: af_can: fix NULL pointer dereference in can_rcv_filter Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 086/157] ARM: at91: fix build for SAMA5D3 w/o L2 cache Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 087/157] gpiolib: fix memory leak in gpiochip_setup_dev() Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 088/157] netfilter: nft_set_pipapo: Actually validate intervals in fields after the first one Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 089/157] netfilter: flowtable_offload: fix using __this_cpu_add in preemptible Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 090/157] drm/vmwgfx: Fix race issue calling pin_user_pages Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 091/157] ieee802154: cc2520: Fix error return code in cc2520_hw_init() Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 092/157] ca8210: Fix crash by zero initializing data Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 093/157] netfilter: conntrack: fix using __this_cpu_add in preemptible Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 094/157] netfilter: ctnetlink: fix compilation warning after data race fixes in ct mark Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 095/157] drm/bridge: ti-sn65dsi86: Fix output polarity setting bug Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 096/157] gpio: amd8111: Fix PCI device reference count leak Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 097/157] e1000e: Fix TX dispatch condition Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 098/157] igb: Allocate MSI-X vector when testing Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 099/157] net: broadcom: Add PTP_1588_CLOCK_OPTIONAL dependency for BCMGENET under ARCH_BCM2835 Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 100/157] net: ethernet: ti: am65-cpsw: Fix RGMII configuration at SPEED_10 Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 101/157] drm: bridge: dw_hdmi: fix preference of RGB modes over YUV420 Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 102/157] af_unix: Get user_ns from in_skb in unix_diag_get_exact() Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 103/157] inet: ping: use hlist_nulls rcu iterator during lookup Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 104/157] vmxnet3: correctly report encapsulated LRO packet Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 105/157] vmxnet3: use correct intrConf reference when using extended queues Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 106/157] Bluetooth: 6LoWPAN: add missing hci_dev_put() in get_l2cap_conn() Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 107/157] Bluetooth: hci_conn: add missing hci_dev_put() in iso_listen_bis() Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 108/157] Bluetooth: Remove codec id field in vendor codec definition Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 109/157] Bluetooth: Fix support for Read Local Supported Codecs V2 Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 110/157] Bluetooth: Fix not cleanup led when bt_init fails Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 111/157] net: dsa: ksz: Check return value Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 112/157] net: dsa: hellcreek: " Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 113/157] net: dsa: sja1105: " Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 114/157] selftests: rtnetlink: correct xfrm policy rule in kci_test_ipsec_offload Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 115/157] nfp: correct desc type when header dma len is 4096 Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 116/157] mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add() Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 117/157] net: encx24j600: Add parentheses to fix precedence Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 118/157] net: encx24j600: Fix invalid logic in reading of MISTAT register Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 119/157] net: mdiobus: fwnode_mdiobus_register_phy() rework error handling Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 120/157] net: mdiobus: fix double put fwnode in the error path Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 121/157] octeontx2-pf: Fix potential memory leak in otx2_init_tc() Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 122/157] net: microchip: sparx5: correctly free skb in xmit Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 123/157] xen-netfront: Fix NULL sring after live migration Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 124/157] net: mvneta: Prevent out of bounds read in mvneta_config_rss() Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 125/157] i40e: Fix not setting default xps_cpus after reset Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 126/157] i40e: Fix for VF MAC address 0 Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 127/157] i40e: Disallow ip4 and ip6 l4_4_bytes Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 128/157] NFC: nci: Bounds check struct nfc_target arrays Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 129/157] nvme initialize core quirks before calling nvme_init_subsystem Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 130/157] gpio/rockchip: fix refcount leak in rockchip_gpiolib_register() Greg Kroah-Hartman
2022-12-12 13:17 ` [PATCH 6.0 131/157] net: stmmac: fix "snps,axi-config" node property parsing Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 132/157] net: wwan: iosm: fix memory leak in ipc_mux_init() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 133/157] ip_gre: do not report erspan version on GRE interface Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 134/157] net: microchip: sparx5: Fix missing destroy_workqueue of mact_queue Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 135/157] ravb: Fix potential use-after-free in ravb_rx_gbeth() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 136/157] net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 137/157] net: hisilicon: Fix potential use-after-free in hisi_femac_rx() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 138/157] net: mdio: fix unbalanced fwnode reference count in mdio_device_release() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 139/157] net: hisilicon: Fix potential use-after-free in hix5hd2_rx() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 140/157] tipc: Fix potential OOB in tipc_link_proto_rcv() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 141/157] bonding: get correct NA dest address Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 142/157] ipv4: Fix incorrect route flushing when source address is deleted Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 143/157] ipv4: Fix incorrect route flushing when table ID 0 is used Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 144/157] net: dsa: sja1105: fix memory leak in sja1105_setup_devlink_regions() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 145/157] tipc: call tipc_lxc_xmit without holding node_read_lock Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 146/157] ethernet: aeroflex: fix potential skb leak in greth_init_rings() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 147/157] dpaa2-switch: Fix memory leak in dpaa2_switch_acl_entry_add() and dpaa2_switch_acl_entry_remove() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 148/157] xen/netback: fix build warning Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 149/157] net: dsa: mv88e6xxx: accept phy-mode = "internal" for internal PHY ports Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 150/157] net: phy: mxl-gpy: add MDINT workaround Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 151/157] net: plip: dont call kfree_skb/dev_kfree_skb() under spin_lock_irq() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 152/157] ipv6: avoid use-after-free in ip6_fragment() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 153/157] net: thunderbolt: fix memory leak in tbnet_open() Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 154/157] net: mvneta: Fix an out of bounds check Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 155/157] macsec: add missing attribute validation for offload Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 156/157] s390/qeth: fix use-after-free in hsci Greg Kroah-Hartman
2022-12-12 13:18 ` [PATCH 6.0 157/157] drm/amdgpu/vcn: update vcn4 fw shared data structure Greg Kroah-Hartman
2022-12-12 19:06 ` [PATCH 6.0 000/157] 6.0.13-rc1 review Justin Forbes
2022-12-12 23:14 ` Florian Fainelli
2022-12-12 23:58 ` Shuah Khan
2022-12-13 0:25 ` Guenter Roeck
2022-12-13 2:27 ` Ron Economos
2022-12-13 3:20 ` Bagas Sanjaya
2022-12-13 6:31 ` Naresh Kamboju
2022-12-13 16:51 ` Nathan Chancellor
2022-12-13 6:36 ` Naresh Kamboju
2022-12-13 8:06 ` Fenil Jain
2022-12-13 12:09 ` Sudip Mukherjee (Codethink)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221212130935.774327614@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=elic@nvidia.com \
--cc=mbloch@nvidia.com \
--cc=patches@lists.linux.dev \
--cc=saeedm@nvidia.com \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox