From 5017a6a30cd43240c688ed996b81a5daff2a7dc9 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Tue, 24 Sep 2024 17:45:00 +0200 Subject: [PATCH 01/24] netem: fix return value if duplicate enqueue fails There is a bug in netem_enqueue() introduced by commit 5845f706388a ("net: netem: fix skb length BUG_ON in __skb_to_sgvec") that can lead to a use-after-free. This commit made netem_enqueue() always return NET_XMIT_SUCCESS when a packet is duplicated, which can cause the parent qdisc's q.qlen to be mistakenly incremented. When this happens qlen_notify() may be skipped on the parent during destruction, leaving a dangling pointer for some classful qdiscs like DRR. There are two ways for the bug happen: - If the duplicated packet is dropped by rootq->enqueue() and then the original packet is also dropped. - If rootq->enqueue() sends the duplicated packet to a different qdisc and the original packet is dropped. In both cases NET_XMIT_SUCCESS is returned even though no packets are enqueued at the netem qdisc. The fix is to defer the enqueue of the duplicate packet until after the original packet has been guaranteed to return NET_XMIT_SUCCESS. Fixes: 5845f706388a ("net: netem: fix skb length BUG_ON in __skb_to_sgvec") Reported-by: Budimir Markovic Signed-off-by: Stephen Hemminger Reviewed-by: Simon Horman Link: https://patch.msgid.link/20240819175753.5151-1-stephen@networkplumber.org Signed-off-by: Jakub Kicinski CVE-2024-45016 (cherry picked from commit c07ff8592d57ed258afee5a5e04991a48dbaf382) Signed-off-by: Ian Whitfield Acked-by: Magali Lemes Acked-by: Jacob Martin Signed-off-by: Stefan Bader --- net/sched/sch_netem.c | 47 ++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index fa678eb885284..0d29d0ccf8cb2 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -446,12 +446,10 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch, struct netem_sched_data *q = qdisc_priv(sch); /* We don't fill cb now as skb_unshare() may invalidate it */ struct netem_skb_cb *cb; - struct sk_buff *skb2; + struct sk_buff *skb2 = NULL; struct sk_buff *segs = NULL; unsigned int prev_len = qdisc_pkt_len(skb); int count = 1; - int rc = NET_XMIT_SUCCESS; - int rc_drop = NET_XMIT_DROP; /* Do not fool qdisc_drop_all() */ skb->prev = NULL; @@ -480,19 +478,11 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch, skb_orphan_partial(skb); /* - * If we need to duplicate packet, then re-insert at top of the - * qdisc tree, since parent queuer expects that only one - * skb will be queued. + * If we need to duplicate packet, then clone it before + * original is modified. */ - if (count > 1 && (skb2 = skb_clone(skb, GFP_ATOMIC)) != NULL) { - struct Qdisc *rootq = qdisc_root_bh(sch); - u32 dupsave = q->duplicate; /* prevent duplicating a dup... */ - - q->duplicate = 0; - rootq->enqueue(skb2, rootq, to_free); - q->duplicate = dupsave; - rc_drop = NET_XMIT_SUCCESS; - } + if (count > 1) + skb2 = skb_clone(skb, GFP_ATOMIC); /* * Randomized packet corruption. @@ -504,7 +494,8 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch, if (skb_is_gso(skb)) { skb = netem_segment(skb, sch, to_free); if (!skb) - return rc_drop; + goto finish_segs; + segs = skb->next; skb_mark_not_on_list(skb); qdisc_skb_cb(skb)->pkt_len = skb->len; @@ -530,7 +521,24 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch, /* re-link segs, so that qdisc_drop_all() frees them all */ skb->next = segs; qdisc_drop_all(skb, sch, to_free); - return rc_drop; + if (skb2) + __qdisc_drop(skb2, to_free); + return NET_XMIT_DROP; + } + + /* + * If doing duplication then re-insert at top of the + * qdisc tree, since parent queuer expects that only one + * skb will be queued. + */ + if (skb2) { + struct Qdisc *rootq = qdisc_root_bh(sch); + u32 dupsave = q->duplicate; /* prevent duplicating a dup... */ + + q->duplicate = 0; + rootq->enqueue(skb2, rootq, to_free); + q->duplicate = dupsave; + skb2 = NULL; } qdisc_qstats_backlog_inc(sch, skb); @@ -601,9 +609,12 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch, } finish_segs: + if (skb2) + __qdisc_drop(skb2, to_free); + if (segs) { unsigned int len, last_len; - int nb; + int rc, nb; len = skb ? skb->len : 0; nb = skb ? 1 : 0; From 978f407df30deeaceb39f7df86d338762f0f7dfd Mon Sep 17 00:00:00 2001 From: Manuel Diewald Date: Fri, 27 Sep 2024 18:58:21 +0200 Subject: [PATCH 02/24] UBUNTU: Start new release Ignore: yes Signed-off-by: Manuel Diewald --- debian.master/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian.master/changelog b/debian.master/changelog index 2dd1a5f053b4d..9545f35927afb 100644 --- a/debian.master/changelog +++ b/debian.master/changelog @@ -1,3 +1,11 @@ +linux (6.8.0-47.47) UNRELEASED; urgency=medium + + CHANGELOG: Do not edit directly. Autogenerated at release. + CHANGELOG: Use the printchanges target to see the curent changes. + CHANGELOG: Use the insertchanges target to create the final log. + + -- Manuel Diewald Fri, 27 Sep 2024 18:58:21 +0200 + linux (6.8.0-45.45) noble; urgency=medium * noble/linux: 6.8.0-45.45 -proposed tracker (LP: #2078100) From cd3da1a0fdfca7636c1f7f404cd6fc9588696f8f Mon Sep 17 00:00:00 2001 From: Manuel Diewald Date: Fri, 27 Sep 2024 19:19:30 +0200 Subject: [PATCH 03/24] UBUNTU: link-to-tracker: update tracking bug BugLink: https://bugs.launchpad.net/bugs/2082118 Properties: no-test-build Signed-off-by: Manuel Diewald --- debian.master/tracking-bug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian.master/tracking-bug b/debian.master/tracking-bug index b254652d45ed0..f574657584485 100644 --- a/debian.master/tracking-bug +++ b/debian.master/tracking-bug @@ -1 +1 @@ -2078100 s2024.08.05-1 +2082118 s2024.09.02-1 From e46076274f5d6ec34c953fca905120eb39861826 Mon Sep 17 00:00:00 2001 From: Manuel Diewald Date: Fri, 27 Sep 2024 19:21:30 +0200 Subject: [PATCH 04/24] UBUNTU: Ubuntu-6.8.0-47.47 Signed-off-by: Manuel Diewald --- debian.master/changelog | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/debian.master/changelog b/debian.master/changelog index 9545f35927afb..ffb1956524406 100644 --- a/debian.master/changelog +++ b/debian.master/changelog @@ -1,10 +1,11 @@ -linux (6.8.0-47.47) UNRELEASED; urgency=medium +linux (6.8.0-47.47) noble; urgency=medium - CHANGELOG: Do not edit directly. Autogenerated at release. - CHANGELOG: Use the printchanges target to see the curent changes. - CHANGELOG: Use the insertchanges target to create the final log. + * noble/linux: 6.8.0-47.47 -proposed tracker (LP: #2082118) - -- Manuel Diewald Fri, 27 Sep 2024 18:58:21 +0200 + * CVE-2024-45016 + - netem: fix return value if duplicate enqueue fails + + -- Manuel Diewald Fri, 27 Sep 2024 19:21:30 +0200 linux (6.8.0-45.45) noble; urgency=medium From e4c2d707c6f0bbcac6842496a2aca05e18e17dda Mon Sep 17 00:00:00 2001 From: John Wren Kennedy Date: Thu, 1 Apr 2021 19:46:14 +0000 Subject: [PATCH 05/24] @@DELPHIX_PATCHSET_START@@ This is a placeholder commit to separate the Ubuntu kernel source and our patches. Used by kernel_merge_with_upstream() in the linux-pkg repo. --- delphix | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 delphix diff --git a/delphix b/delphix new file mode 100644 index 0000000000000..e69de29bb2d1d From 875ba2f9278c90494f74d8de285afa4c847c6505 Mon Sep 17 00:00:00 2001 From: Pavel Zakharov Date: Tue, 9 Feb 2021 11:15:55 -0500 Subject: [PATCH 06/24] DLPX-71852 iSCSI: journal flooded with "Unable to locate Target IQN" messages (#2) --- drivers/target/iscsi/iscsi_target_login.c | 2 +- drivers/target/iscsi/iscsi_target_nego.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c index 90b870f234f03..7ecf561465657 100644 --- a/drivers/target/iscsi/iscsi_target_login.c +++ b/drivers/target/iscsi/iscsi_target_login.c @@ -1132,7 +1132,7 @@ void iscsi_target_login_sess_out(struct iscsit_conn *conn, if (!new_sess) goto old_sess_out; - pr_err("iSCSI Login negotiation failed.\n"); + pr_debug("iSCSI Login negotiation failed.\n"); iscsit_collect_login_stats(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, ISCSI_LOGIN_STATUS_INIT_ERR); if (!zero_tsih || !conn->sess) diff --git a/drivers/target/iscsi/iscsi_target_nego.c b/drivers/target/iscsi/iscsi_target_nego.c index fa3fb5f4e6bc4..5cddf8e60b3e6 100644 --- a/drivers/target/iscsi/iscsi_target_nego.c +++ b/drivers/target/iscsi/iscsi_target_nego.c @@ -1234,7 +1234,7 @@ int iscsi_target_locate_portal( */ tiqn = iscsit_get_tiqn_for_login(t_buf); if (!tiqn) { - pr_err("Unable to locate Target IQN: %s in" + pr_debug("Unable to locate Target IQN: %s in" " Storage Node\n", t_buf); iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, ISCSI_LOGIN_STATUS_SVC_UNAVAILABLE); From 94bace0f05e805520ccfae592dd598bf8469e863 Mon Sep 17 00:00:00 2001 From: Pavel Zakharov Date: Mon, 8 Mar 2021 18:11:08 -0500 Subject: [PATCH 07/24] DLPX-72065 Aborted iSCSI command never completes after LUN reset (#4) --- drivers/target/iscsi/iscsi_target_erl1.c | 23 +++++++++++++++++++---- drivers/target/target_core_transport.c | 3 ++- include/target/target_core_fabric.h | 1 + 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/drivers/target/iscsi/iscsi_target_erl1.c b/drivers/target/iscsi/iscsi_target_erl1.c index 6797200211836..26f3ecd25c28d 100644 --- a/drivers/target/iscsi/iscsi_target_erl1.c +++ b/drivers/target/iscsi/iscsi_target_erl1.c @@ -1102,6 +1102,18 @@ void iscsit_handle_dataout_timeout(struct timer_list *t) iscsit_inc_conn_usage_count(conn); + /* + * If the command was aborted, for instance following a LUN RESET, + * a dataout timeout might be normal. + */ + if (target_cmd_interrupted(&cmd->se_cmd)) { + pr_debug("DataOut timeout on interrupted cmd with" + " ITT[0x%08llx]\n", cmd->se_cmd.tag); + cmd->dataout_timer_flags &= ~ISCSI_TF_RUNNING; + iscsit_dec_conn_usage_count(conn); + return; + } + spin_lock_bh(&cmd->dataout_timeout_lock); if (cmd->dataout_timer_flags & ISCSI_TF_STOP) { spin_unlock_bh(&cmd->dataout_timeout_lock); @@ -1115,19 +1127,22 @@ void iscsit_handle_dataout_timeout(struct timer_list *t) if (!sess->sess_ops->ErrorRecoveryLevel) { pr_err("Unable to recover from DataOut timeout while" " in ERL=0, closing iSCSI connection for I_T Nexus" - " %s,i,0x%6phN,%s,t,0x%02x\n", + " %s,i,0x%6phN,%s,t,0x%02x, cmd ITT[0x%08llx]\n", sess->sess_ops->InitiatorName, sess->isid, - sess->tpg->tpg_tiqn->tiqn, (u32)sess->tpg->tpgt); + sess->tpg->tpg_tiqn->tiqn, (u32)sess->tpg->tpgt, + cmd->se_cmd.tag); goto failure; } if (++cmd->dataout_timeout_retries == na->dataout_timeout_retries) { pr_err("Command ITT: 0x%08x exceeded max retries" " for DataOUT timeout %u, closing iSCSI connection for" - " I_T Nexus %s,i,0x%6phN,%s,t,0x%02x\n", + " I_T Nexus %s,i,0x%6phN,%s,t,0x%02x," + " cmd ITT[0x%08llx]\n", cmd->init_task_tag, na->dataout_timeout_retries, sess->sess_ops->InitiatorName, sess->isid, - sess->tpg->tpg_tiqn->tiqn, (u32)sess->tpg->tpgt); + sess->tpg->tpg_tiqn->tiqn, (u32)sess->tpg->tpgt, + cmd->se_cmd.tag); goto failure; } diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index 73d0d6133ac8f..d37b2641bfe50 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -882,7 +882,7 @@ static void target_abort_work(struct work_struct *work) target_handle_abort(cmd); } -static bool target_cmd_interrupted(struct se_cmd *cmd) +bool target_cmd_interrupted(struct se_cmd *cmd) { int post_ret; @@ -901,6 +901,7 @@ static bool target_cmd_interrupted(struct se_cmd *cmd) return false; } +EXPORT_SYMBOL(target_cmd_interrupted); /* May be called from interrupt context so must not sleep. */ void target_complete_cmd_with_sense(struct se_cmd *cmd, u8 scsi_status, diff --git a/include/target/target_core_fabric.h b/include/target/target_core_fabric.h index 3378ff9ee271c..4f136a98df63e 100644 --- a/include/target/target_core_fabric.h +++ b/include/target/target_core_fabric.h @@ -191,6 +191,7 @@ sense_reason_t transport_generic_new_cmd(struct se_cmd *); void target_put_cmd_and_wait(struct se_cmd *cmd); void target_execute_cmd(struct se_cmd *cmd); +bool target_cmd_interrupted(struct se_cmd *cmd); int transport_generic_free_cmd(struct se_cmd *, int); From 2f7c5ee6ce92a13824c9a9748142e37184495d04 Mon Sep 17 00:00:00 2001 From: Prakash Surya Date: Tue, 15 Nov 2022 14:41:17 -0800 Subject: [PATCH 08/24] DLPX-83442 Disable various kernel modules which we don't use (#13) --- Makefile | 11 +- debian.master/config/OVERRIDES | 233 ++++++++++++++++++++++++++++++++ debian.master/dkms-versions | 4 - debian/rules.d/2-binary-arch.mk | 2 +- 4 files changed, 239 insertions(+), 11 deletions(-) create mode 100644 debian.master/config/OVERRIDES diff --git a/Makefile b/Makefile index bb4d0d6fa9b43..7970efc804ae6 100644 --- a/Makefile +++ b/Makefile @@ -549,9 +549,6 @@ LINUXINCLUDE := \ -I$(objtree)/include \ $(USERINCLUDE) -# UBUNTU: Include our third party driver stuff too -LINUXINCLUDE += -I$(srctree)/ubuntu/include - KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE KBUILD_CFLAGS := @@ -738,8 +735,11 @@ endif ifeq ($(KBUILD_EXTMOD),) # Objects we will link into vmlinux / subdirs we need to visit -core-y := -drivers-y := +core-y := init/ usr/ arch/$(SRCARCH)/ +drivers-y := drivers/ sound/ +drivers-$(CONFIG_SAMPLES) += samples/ +drivers-$(CONFIG_NET) += net/ +drivers-y += virt/ libs-y := lib/ endif # KBUILD_EXTMOD @@ -1297,7 +1297,6 @@ headers: $(version_h) scripts_unifdef uapi-asm-generic archheaders archscripts $(if $(filter um, $(SRCARCH)), $(error Headers not exportable for UML)) $(Q)$(MAKE) $(hdr-inst)=include/uapi $(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi - $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= ifdef CONFIG_HEADERS_INSTALL prepare: headers diff --git a/debian.master/config/OVERRIDES b/debian.master/config/OVERRIDES new file mode 100644 index 0000000000000..52486cc6a94f0 --- /dev/null +++ b/debian.master/config/OVERRIDES @@ -0,0 +1,233 @@ +# +# Disable various "net" modules which we don't use. +# +CONFIG_6LOWPAN=n +CONFIG_6LOWPAN_NHC=n +CONFIG_BT=n +CONFIG_CAIF=n +CONFIG_HAMRADIO=n +CONFIG_IEEE802154=n +CONFIG_NET_9P=n +CONFIG_NET_DSA=n +CONFIG_NFC=n +CONFIG_RFKILL=n +CONFIG_WIMAX=n +CONFIG_WIRELESS=n + +# +# Disable various "drivers" modules which we don't use. +# +CONFIG_ACCESSIBILITY=n +CONFIG_ATA=n +CONFIG_ATM_DRIVERS=n +CONFIG_AUXDISPLAY=n +CONFIG_BCMA=n +CONFIG_CONNECTOR=n +CONFIG_CRYPTO_HW=n +CONFIG_DAX=n +CONFIG_EISA=n +CONFIG_EXTCON=n +CONFIG_FPGA=n +CONFIG_FSI=n +CONFIG_GNSS=n +CONFIG_GPIOLIB=n +CONFIG_GREYBUS=n +CONFIG_HSI=n +CONFIG_I3C=n +CONFIG_IDE=n +CONFIG_IIO=n +CONFIG_INFINIBAND=n +CONFIG_INTERCONNECT=n +CONFIG_IPACK_BUS=n +CONFIG_LIBNVDIMM=n +CONFIG_MAILBOX=n +CONFIG_MCB=n +CONFIG_MEDIA_SUPPORT=n +CONFIG_MEMSTICK=n +CONFIG_MMC=n +CONFIG_MTD=n +CONFIG_NEW_LEDS=n +CONFIG_NTB=n +CONFIG_NVM=n +CONFIG_NVMEM=n +CONFIG_OF=n +CONFIG_PARPORT=n +CONFIG_PARPORT_PANEL=n +CONFIG_PCCARD=n +CONFIG_PINCTRL=n +CONFIG_PMIC_OPREGION=n +CONFIG_PM_DEVFREQ=n +CONFIG_POWERCAP=n +CONFIG_PPS=n +CONFIG_RAPIDIO=n +CONFIG_REGULATOR=n +CONFIG_RESET_CONTROLLER=n +CONFIG_RTC_CLASS=n +CONFIG_SFI=n +CONFIG_SIOX=n +CONFIG_SLIMBUS=n +CONFIG_SOUNDWIRE=n +CONFIG_SPI=n +CONFIG_SPMI=n +CONFIG_STAGING=n +CONFIG_THERMAL=n +CONFIG_THUNDERBOLT=n +CONFIG_UIO=n +CONFIG_USB_SUPPORT=n +CONFIG_VFIO=n +CONFIG_W1=n + +# +# Disable various filesystem which we don't use. +# +CONFIG_9P_FS=n +CONFIG_ADFS_FS=n +CONFIG_AFFS_FS=n +CONFIG_AFS_FS=n +CONFIG_AUFS_FS=n +CONFIG_BEFS_FS=n +CONFIG_BFS_FS=n +CONFIG_BTRFS_FS=n +CONFIG_CEPH_FS=n +CONFIG_CODA_FS=n +CONFIG_ECRYPT_FS=n +CONFIG_EFS_FS=n +CONFIG_EROFS_FS=n +CONFIG_EXFAT_FS=n +CONFIG_EXT2_FS=n +CONFIG_EXT3_FS=n +CONFIG_F2FS_FS=n +CONFIG_FAT_FS=n +CONFIG_GFS2_FS=n +CONFIG_HFSPLUS_FS=n +CONFIG_HFS_FS=n +CONFIG_HPFS_FS=n +CONFIG_JFFS2_FS=n +CONFIG_JFS_FS=n +CONFIG_MINIX_FS=n +CONFIG_MSDOS_FS=n +CONFIG_NILFS2_FS=n +CONFIG_OCFS2_FS=n +CONFIG_OMFS_FS=n +CONFIG_ORANGEFS_FS=n +CONFIG_QNX4FS_FS=n +CONFIG_QNX6FS_FS=n +CONFIG_REISERFS_FS=n +CONFIG_REISERFS_FS=n +CONFIG_ROMFS_FS=n +CONFIG_SYSV_FS=n +CONFIG_UBIFS_FS=n +CONFIG_UDF_FS=n +CONFIG_UFS_FS=n +CONFIG_VFAT_FS=n +CONFIG_VXFS_FS=n +CONFIG_XFS_FS=n + +# +# Disable other misc. modules which we don't use. +# +CONFIG_AGP=n +CONFIG_ANDROID=n +CONFIG_AQUANTIA_PHY=n +CONFIG_ATALK=n +CONFIG_BATMAN_ADV=n +CONFIG_BCACHE=n +CONFIG_BE2ISCSI=n +CONFIG_BE2NET=n +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=n +CONFIG_BLK_DEV_RSXX=n +CONFIG_BNA=n +CONFIG_BNX2=n +CONFIG_BNX2X=n +CONFIG_BNXT=n +CONFIG_BROADCOM_PHY=n +CONFIG_CASSINI=n +CONFIG_CDROM=n +CONFIG_CEPH_LIB=n +CONFIG_CIFS=n +CONFIG_CRAMFS=n +CONFIG_CYCLADES=n +CONFIG_DRM=n +CONFIG_ENIC=n +CONFIG_FM10K=n +CONFIG_FORCEDETH=n +CONFIG_GENWQE=n +CONFIG_GVE=n +CONFIG_HABANA_AI=n +CONFIG_HID=n +CONFIG_HIO=n +CONFIG_HWMON=n +CONFIG_IAVF=n +CONFIG_ICE=n +CONFIG_INFINIBAND=n +CONFIG_INTEL_IOATDMA=n +CONFIG_INTEL_MEI=n +CONFIG_IONIC=n +CONFIG_JME=n +CONFIG_KVM=n +CONFIG_LIBFC=n +CONFIG_LIQUIDIO=n +CONFIG_MEGARAID_LEGACY=n +CONFIG_MEGARAID_MAILBOX=n +CONFIG_MEGARAID_MM=n +CONFIG_MEGARAID_NEWGEN=n +CONFIG_MEGARAID_SAS=n +CONFIG_MFD_MADERA=n +CONFIG_MLX4_CORE=n +CONFIG_MLX4_INFINIBAND=n +CONFIG_MLX5_CORE=n +CONFIG_MLX5_INFINIBAND=n +CONFIG_MLXSW_SPECTRUM=n +CONFIG_MSCC_OCELOT_SWITCH=n +CONFIG_MWAVE=n +CONFIG_NETXEN_NIC=n +CONFIG_NET_TEAM=n +CONFIG_NET_VENDOR_AQUANTIA=n +CONFIG_NET_VENDOR_ATHEROS=n +CONFIG_NET_VENDOR_CAVIUM=n +CONFIG_NET_VENDOR_CHELSIO=n +CONFIG_NET_VENDOR_CHELSIO=n +CONFIG_NET_VENDOR_MARVELL=n +CONFIG_NET_VENDOR_MICREL=n +CONFIG_NET_VENDOR_MYRI=n +CONFIG_NET_VENDOR_NETERION=n +CONFIG_NET_VENDOR_ROCKER=n +CONFIG_NFC=n +CONFIG_NFP=n +CONFIG_NOZOMI=n +CONFIG_QED=n +CONFIG_QLCNIC=n +CONFIG_RDS=n +CONFIG_REALTEK_PHY=n +CONFIG_SCIF=n +CONFIG_SCSI_ADVANSYS=n +CONFIG_SCSI_AIC7XXX=n +CONFIG_SCSI_AIC94XX=n +CONFIG_SCSI_ARCMSR=n +CONFIG_SCSI_BFA_FC=n +CONFIG_SCSI_ESAS2R=n +CONFIG_SCSI_GDTH=n +CONFIG_SCSI_HPSA=n +CONFIG_SCSI_IPS=n +CONFIG_SCSI_LPFC=n +CONFIG_SCSI_MVSAS=n +CONFIG_SCSI_MYRB=n +CONFIG_SCSI_MYRS=n +CONFIG_SCSI_PM8001=n +CONFIG_SCSI_PMCRAID=n +CONFIG_SCSI_QLA_FC=n +CONFIG_SCSI_SMARTPQI=n +CONFIG_SCSI_SNIC=n +CONFIG_SCSI_SYM53C8XX_2=n +CONFIG_SCSI_UFSHCD=n +CONFIG_SENSORS_LM93=n +CONFIG_SFC=n +CONFIG_SOUND=n +CONFIG_SSB=n +CONFIG_STMMAC_ETH=n +CONFIG_SXGBE_ETH=n +CONFIG_SYNCLINK=n +CONFIG_SYNCLINK=n +CONFIG_USB=n +CONFIG_VBOXGUEST=n +CONFIG_VOP=n diff --git a/debian.master/dkms-versions b/debian.master/dkms-versions index 82c3d68c356fa..378cbd0c13480 100644 --- a/debian.master/dkms-versions +++ b/debian.master/dkms-versions @@ -1,5 +1 @@ zfs-linux 2.2.2-0ubuntu9 modulename=zfs debpath=pool/universe/z/%package%/zfs-dkms_%version%_all.deb arch=amd64 arch=arm64 arch=ppc64el arch=s390x rprovides=spl-modules rprovides=spl-dkms rprovides=zfs-modules rprovides=zfs-dkms -ipu6-drivers 0~git202406240945.aecec2aa-0ubuntu2~24.04.1 modulename=ipu6 debpath=pool/universe/i/%package%/intel-ipu6-dkms_%version%_amd64.deb arch=amd64 rprovides=ipu6-modules rprovides=intel-ipu6-dkms type=standalone -backport-iwlwifi-dkms 11510-0ubuntu1 modulename=iwlwifi debpath=pool/universe/b/%package%/backport-iwlwifi-dkms_%version%_all.deb arch=amd64 rprovides=iwlwifi-modules rprovides=backport-iwlwifi-dkms type=standalone -v4l2loopback 0.12.7-2ubuntu5 modulename=v4l2loopback debpath=pool/universe/v/%package%/v4l2loopback-dkms_%version%_all.deb arch=amd64 rprovides=v4l2loopback-modules rprovides=v4l2loopback-dkms -usbio-drivers 0~git202312141918.78ffb706-0ubuntu2.1 modulename=usbio debpath=pool/universe/u/%package%/intel-usbio-dkms_%version%_amd64.deb arch=amd64 rprovides=usbio-modules rprovides=intel-usbio-dkms type=standalone diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk index 89d1eb769ed90..7d1af53379f05 100644 --- a/debian/rules.d/2-binary-arch.mk +++ b/debian/rules.d/2-binary-arch.mk @@ -7,7 +7,7 @@ shlibdeps_opts = $(if $(CROSS_COMPILE),-- -l$(CROSS_COMPILE:%-=/usr/%)/lib) debian/scripts/fix-filenames: debian/scripts/fix-filenames.c $(HOSTCC) $^ -o $@ -$(stampdir)/stamp-prepare-%: config-prepare-check-% +$(stampdir)/stamp-prepare-%: $(stampdir)/stamp-prepare-tree-% @echo Debug: $@ $(stamp) From 6ae64caff88f6202f8916403cd24d74130f8a947 Mon Sep 17 00:00:00 2001 From: Paul Dagnelie Date: Mon, 14 Nov 2022 13:49:55 -0800 Subject: [PATCH 09/24] DLPX-83697 iscsi target login should wait until tx/rx threads have properly started --- drivers/target/iscsi/iscsi_target.c | 2 ++ drivers/target/iscsi/iscsi_target_login.c | 3 +++ include/target/iscsi/iscsi_target_core.h | 1 + 3 files changed, 6 insertions(+) diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index 1d25e64b068a0..f1eed1d49c8a0 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c @@ -3922,6 +3922,7 @@ int iscsi_target_tx_thread(void *arg) * connection recovery / failure event can be triggered externally. */ allow_signal(SIGINT); + complete(&conn->kthr_start_comp); while (!kthread_should_stop()) { /* @@ -4170,6 +4171,7 @@ int iscsi_target_rx_thread(void *arg) * connection recovery / failure event can be triggered externally. */ allow_signal(SIGINT); + complete(&conn->kthr_start_comp); /* * Wait for iscsi_post_login_handler() to complete before allowing * incoming iscsi/tcp socket I/O, and/or failing the connection. diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c index 7ecf561465657..d564f9ae4db97 100644 --- a/drivers/target/iscsi/iscsi_target_login.c +++ b/drivers/target/iscsi/iscsi_target_login.c @@ -660,6 +660,7 @@ int iscsit_start_kthreads(struct iscsit_conn *conn) ret = PTR_ERR(conn->tx_thread); goto out_bitmap; } + wait_for_completion(&conn->kthr_start_comp); conn->tx_thread_active = true; conn->rx_thread = kthread_run(iscsi_target_rx_thread, conn, @@ -669,6 +670,7 @@ int iscsit_start_kthreads(struct iscsit_conn *conn) ret = PTR_ERR(conn->rx_thread); goto out_tx; } + wait_for_completion(&conn->kthr_start_comp); conn->rx_thread_active = true; return 0; @@ -1064,6 +1066,7 @@ static struct iscsit_conn *iscsit_alloc_conn(struct iscsi_np *np) init_completion(&conn->rx_half_close_comp); init_completion(&conn->tx_half_close_comp); init_completion(&conn->rx_login_comp); + init_completion(&conn->kthr_start_comp); spin_lock_init(&conn->cmd_lock); spin_lock_init(&conn->conn_usage_lock); spin_lock_init(&conn->immed_queue_lock); diff --git a/include/target/iscsi/iscsi_target_core.h b/include/target/iscsi/iscsi_target_core.h index 60af7c63b34e6..002f37b6366f5 100644 --- a/include/target/iscsi/iscsi_target_core.h +++ b/include/target/iscsi/iscsi_target_core.h @@ -550,6 +550,7 @@ struct iscsit_conn { struct completion conn_logout_comp; struct completion tx_half_close_comp; struct completion rx_half_close_comp; + struct completion kthr_start_comp; /* socket used by this connection */ struct socket *sock; void (*orig_data_ready)(struct sock *); From c910f6e6d6976ee273b5efd7c8967fe2bac33f4e Mon Sep 17 00:00:00 2001 From: Don Brady Date: Fri, 9 Dec 2022 16:21:35 -0700 Subject: [PATCH 10/24] DLPX-83701 Make function mnt_add_count() traceable (#16) --- fs/namespace.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/namespace.c b/fs/namespace.c index 5a51315c66781..c8110a5ac85a5 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -169,7 +169,7 @@ void mnt_release_group_id(struct mount *mnt) /* * vfsmount lock must be held for read */ -static inline void mnt_add_count(struct mount *mnt, int n) +static noinline __noclone void mnt_add_count(struct mount *mnt, int n) { #ifdef CONFIG_SMP this_cpu_add(mnt->mnt_pcp->mnt_count, n); @@ -1704,7 +1704,8 @@ static int do_umount_root(struct super_block *sb) return ret; } -static int do_umount(struct mount *mnt, int flags) +/* force a bpftrace dynamic function probe here */ +static noinline __noclone int do_umount(struct mount *mnt, int flags) { struct super_block *sb = mnt->mnt.mnt_sb; int retval; From f7d9bb6c74777507c4e6a61eacd1101b4487a484 Mon Sep 17 00:00:00 2001 From: John Wren Kennedy Date: Fri, 10 Feb 2023 15:25:25 -0700 Subject: [PATCH 11/24] DLPX-84608 Remove merge commit from linux-kernel-generic PR URL: https://www.github.com/delphix/linux-kernel-generic/pull/20 --- debian.master/config/OVERRIDES | 1 - 1 file changed, 1 deletion(-) diff --git a/debian.master/config/OVERRIDES b/debian.master/config/OVERRIDES index 52486cc6a94f0..9aa8b75d95105 100644 --- a/debian.master/config/OVERRIDES +++ b/debian.master/config/OVERRIDES @@ -144,7 +144,6 @@ CONFIG_BROADCOM_PHY=n CONFIG_CASSINI=n CONFIG_CDROM=n CONFIG_CEPH_LIB=n -CONFIG_CIFS=n CONFIG_CRAMFS=n CONFIG_CYCLADES=n CONFIG_DRM=n From 2b88ee5f6deefffbf5b2325723a170ab035362bf Mon Sep 17 00:00:00 2001 From: Prakash Surya Date: Wed, 1 Mar 2023 09:08:26 -0800 Subject: [PATCH 12/24] DLPX-84907 CVE-2022-3628 (#21) --- debian.master/config/OVERRIDES | 1 + 1 file changed, 1 insertion(+) diff --git a/debian.master/config/OVERRIDES b/debian.master/config/OVERRIDES index 9aa8b75d95105..738348db2753e 100644 --- a/debian.master/config/OVERRIDES +++ b/debian.master/config/OVERRIDES @@ -76,6 +76,7 @@ CONFIG_UIO=n CONFIG_USB_SUPPORT=n CONFIG_VFIO=n CONFIG_W1=n +CONFIG_WLAN=n # # Disable various filesystem which we don't use. From 580a47c58812306e16ca2da9d0dc93bcf502f5f5 Mon Sep 17 00:00:00 2001 From: Serapheim Dimitropoulos Date: Tue, 7 Mar 2023 13:37:23 -0800 Subject: [PATCH 13/24] DLPX-84985 target: iscsi: fix deadlock in the iSCSI login code (#22) --- drivers/target/iscsi/iscsi_target_nego.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/target/iscsi/iscsi_target_nego.c b/drivers/target/iscsi/iscsi_target_nego.c index 5cddf8e60b3e6..31fe8fb8be75e 100644 --- a/drivers/target/iscsi/iscsi_target_nego.c +++ b/drivers/target/iscsi/iscsi_target_nego.c @@ -472,12 +472,18 @@ static int iscsi_target_do_login(struct iscsit_conn *, struct iscsi_login *); static bool __iscsi_target_sk_check_close(struct sock *sk) { - if (sk->sk_state == TCP_CLOSE_WAIT || sk->sk_state == TCP_CLOSE) { - pr_debug("__iscsi_target_sk_check_close: TCP_CLOSE_WAIT|TCP_CLOSE," + switch (sk->sk_state) { + case TCP_FIN_WAIT1: + case TCP_FIN_WAIT2: + case TCP_CLOSE_WAIT: + case TCP_LAST_ACK: + case TCP_CLOSE: + pr_debug("__iscsi_target_sk_check_close: socket closing," "returning TRUE\n"); return true; + default: + return false; } - return false; } static bool iscsi_target_sk_check_close(struct iscsit_conn *conn) @@ -639,6 +645,7 @@ static void iscsi_target_do_login_rx(struct work_struct *work) } else if (rc == 1) { iscsit_stop_login_timer(conn); cancel_delayed_work(&conn->login_work); + iscsit_stop_login_timer(conn); iscsi_target_nego_release(conn); iscsi_post_login_handler(np, conn, zero_tsih); iscsit_deaccess_np(np, tpg, tpg_np); @@ -649,6 +656,7 @@ static void iscsi_target_do_login_rx(struct work_struct *work) iscsi_target_restore_sock_callbacks(conn); iscsit_stop_login_timer(conn); cancel_delayed_work(&conn->login_work); + iscsit_stop_login_timer(conn); iscsi_target_login_drop(conn, login); iscsit_deaccess_np(np, tpg, tpg_np); } @@ -1352,6 +1360,9 @@ int iscsi_target_start_negotiation( set_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags); write_unlock_bh(&sk->sk_callback_lock); } + + iscsit_start_login_timer(conn); + /* * If iscsi_target_do_login returns zero to signal more PDU * exchanges are required to complete the login, go ahead and From a4506a5ff9202927cc2c8c5e7373319d1beac920 Mon Sep 17 00:00:00 2001 From: sumedhbala-delphix <57050419+sumedhbala-delphix@users.noreply.github.com> Date: Tue, 9 May 2023 10:23:37 -0700 Subject: [PATCH 14/24] DLPX-84906 Disable frame buffer drivers (#25) PR URL: https://www.github.com/delphix/linux-kernel-generic/pull/25 --- debian.master/config/OVERRIDES | 1 + 1 file changed, 1 insertion(+) diff --git a/debian.master/config/OVERRIDES b/debian.master/config/OVERRIDES index 738348db2753e..fc72534164fed 100644 --- a/debian.master/config/OVERRIDES +++ b/debian.master/config/OVERRIDES @@ -27,6 +27,7 @@ CONFIG_CRYPTO_HW=n CONFIG_DAX=n CONFIG_EISA=n CONFIG_EXTCON=n +CONFIG_FB=n CONFIG_FPGA=n CONFIG_FSI=n CONFIG_GNSS=n From c90e6860459d85387178085a76820ea8e64219e9 Mon Sep 17 00:00:00 2001 From: Palash Gandhi <87093175+pgandhi-delphix@users.noreply.github.com> Date: Tue, 23 May 2023 08:13:48 -0700 Subject: [PATCH 15/24] DLPX-86177 Azure Accelerated networking broken because Mellanox drivers absent in kernel (#26) PR URL: https://www.github.com/delphix/linux-kernel-generic/pull/26 --- debian.master/config/OVERRIDES | 5 ----- 1 file changed, 5 deletions(-) diff --git a/debian.master/config/OVERRIDES b/debian.master/config/OVERRIDES index fc72534164fed..b2e702e8b278e 100644 --- a/debian.master/config/OVERRIDES +++ b/debian.master/config/OVERRIDES @@ -174,11 +174,6 @@ CONFIG_MEGARAID_MM=n CONFIG_MEGARAID_NEWGEN=n CONFIG_MEGARAID_SAS=n CONFIG_MFD_MADERA=n -CONFIG_MLX4_CORE=n -CONFIG_MLX4_INFINIBAND=n -CONFIG_MLX5_CORE=n -CONFIG_MLX5_INFINIBAND=n -CONFIG_MLXSW_SPECTRUM=n CONFIG_MSCC_OCELOT_SWITCH=n CONFIG_MWAVE=n CONFIG_NETXEN_NIC=n From 1ae4baadf1730a6789ee5df4d9973d2cfc5e3c7d Mon Sep 17 00:00:00 2001 From: Prakash Surya Date: Tue, 27 Jun 2023 10:37:36 -0700 Subject: [PATCH 16/24] DLPX-86675 Disk quota exceeded when unpacking an upgrade image (#27) --- {debian.master => debian.hwe-5.15}/config/OVERRIDES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename {debian.master => debian.hwe-5.15}/config/OVERRIDES (99%) diff --git a/debian.master/config/OVERRIDES b/debian.hwe-5.15/config/OVERRIDES similarity index 99% rename from debian.master/config/OVERRIDES rename to debian.hwe-5.15/config/OVERRIDES index b2e702e8b278e..8bf1d35f4fef1 100644 --- a/debian.master/config/OVERRIDES +++ b/debian.hwe-5.15/config/OVERRIDES @@ -18,6 +18,7 @@ CONFIG_WIRELESS=n # Disable various "drivers" modules which we don't use. # CONFIG_ACCESSIBILITY=n +CONFIG_AMD_PMC=n CONFIG_ATA=n CONFIG_ATM_DRIVERS=n CONFIG_AUXDISPLAY=n @@ -68,7 +69,6 @@ CONFIG_SFI=n CONFIG_SIOX=n CONFIG_SLIMBUS=n CONFIG_SOUNDWIRE=n -CONFIG_SPI=n CONFIG_SPMI=n CONFIG_STAGING=n CONFIG_THERMAL=n From e2abab9f986190409d676f09da1f60139d2452e2 Mon Sep 17 00:00:00 2001 From: Prakash Surya Date: Tue, 15 Aug 2023 12:23:29 -0700 Subject: [PATCH 17/24] DLPX-87344 Fix kernel merge conflict with upstream From acbf8056f2738deb3347741d67baee7d76d95c6d Mon Sep 17 00:00:00 2001 From: Palash Gandhi <87093175+palash-delphix@users.noreply.github.com> Date: Wed, 6 Sep 2023 20:20:02 -0700 Subject: [PATCH 18/24] DLPX-87710 upgrade from 6.0.16.0 to 15.0.0.0 failed because disk quota error (#29) PR URL: https://www.github.com/delphix/linux-kernel-generic/pull/29 --- debian.delphix/config/annotations | 230 ++++++++++++++++++++++++++++++ debian.hwe-5.15/config/OVERRIDES | 229 ----------------------------- 2 files changed, 230 insertions(+), 229 deletions(-) create mode 100644 debian.delphix/config/annotations delete mode 100644 debian.hwe-5.15/config/OVERRIDES diff --git a/debian.delphix/config/annotations b/debian.delphix/config/annotations new file mode 100644 index 0000000000000..e8822a02b2df2 --- /dev/null +++ b/debian.delphix/config/annotations @@ -0,0 +1,230 @@ +# Menu: HEADER +# FORMAT: 4 +# ARCH: amd64 +# FLAVOUR: amd64-generic + +# +# Disable various "net" modules which we don't use. +# +CONFIG_6LOWPAN policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_6LOWPAN_NHC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BT policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_CAIF policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_HAMRADIO policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_IEEE802154 policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_9P policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_DSA policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NFC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_RFKILL policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_WIMAX policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_WIRELESS policy<{'amd64': 'n', 'arm64': 'n'}> + +# +# Disable various "drivers" modules which we don't use. +# +CONFIG_ACCESSIBILITY policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AMD_PMC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ATA policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ATM_DRIVERS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUXDISPLAY policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BCMA policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_CONNECTOR policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_DAX policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_EISA policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_EXTCON policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_FB policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_FPGA policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_FSI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_GNSS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_GPIOLIB policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_GREYBUS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_HSI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_I3C policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_IDE policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_IIO policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_INFINIBAND policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_INTERCONNECT policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_IPACK_BUS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_LIBNVDIMM policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MAILBOX policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MCB policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MEDIA_SUPPORT policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MEMSTICK policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MMC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MTD policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NEW_LEDS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NTB policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NVM policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NVMEM policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_OF policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_PARPORT policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_PARPORT_PANEL policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_PCCARD policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_PINCTRL policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_PMIC_OPREGION policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_PM_DEVFREQ policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_POWERCAP policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_PPS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_RAPIDIO policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_REGULATOR policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_RESET_CONTROLLER policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_RTC_CLASS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SFI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SIOX policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SLIMBUS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SOUNDWIRE policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SPMI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_STAGING policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_THERMAL policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_THUNDERBOLT policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_UIO policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_USB_SUPPORT policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_VFIO policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_W1 policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_WLAN policy<{'amd64': 'n', 'arm64': 'n'}> + +# +# Disable various filesystem which we don't use. +# +CONFIG_9P_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ADFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AFFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BEFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BTRFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_CEPH_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_CODA_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ECRYPT_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_EFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_EROFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_EXFAT_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_EXT2_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_EXT3_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_F2FS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_FAT_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_GFS2_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_HFSPLUS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_HFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_HPFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_JFFS2_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_JFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MINIX_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MSDOS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NILFS2_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_OCFS2_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_OMFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ORANGEFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_QNX4FS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_QNX6FS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_REISERFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_REISERFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ROMFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SYSV_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_UBIFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_UDF_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_UFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_VFAT_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_VXFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_XFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> + +# +# Disable other misc. modules which we don't use. +# +CONFIG_AGP policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ANDROID policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AQUANTIA_PHY policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ATALK policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BATMAN_ADV policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BCACHE policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BE2ISCSI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BE2NET policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BLK_DEV_PCIESSD_MTIP32XX policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BLK_DEV_RSXX policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BNA policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BNX2 policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BNX2X policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BNXT policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_BROADCOM_PHY policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_CASSINI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_CDROM policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_CEPH_LIB policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_CRAMFS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_CYCLADES policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_DRM policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ENIC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_FM10K policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_FORCEDETH policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_GENWQE policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_GVE policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_HABANA_AI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_HID policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_HIO policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_HWMON policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_IAVF policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ICE policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_INTEL_IOATDMA policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_INTEL_MEI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_IONIC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_JME policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_KVM policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_LIBFC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_LIQUIDIO policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MEGARAID_LEGACY policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MEGARAID_MAILBOX policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MEGARAID_MM policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MEGARAID_NEWGEN policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MEGARAID_SAS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MFD_MADERA policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MSCC_OCELOT_SWITCH policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_MWAVE policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NETXEN_NIC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_TEAM policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_VENDOR_AQUANTIA policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_VENDOR_ATHEROS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_VENDOR_CAVIUM policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_VENDOR_CHELSIO policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_VENDOR_CHELSIO policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_VENDOR_MARVELL policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_VENDOR_MICREL policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_VENDOR_MYRI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_VENDOR_NETERION policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NET_VENDOR_ROCKER policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NFP policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_NOZOMI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_QED policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_QLCNIC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_RDS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_REALTEK_PHY policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCIF policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_ADVANSYS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_AIC7XXX policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_AIC94XX policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_ARCMSR policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_BFA_FC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_ESAS2R policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_GDTH policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_HPSA policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_IPS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_LPFC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_MVSAS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_MYRB policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_MYRS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_PM8001 policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_PMCRAID policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_QLA_FC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_SMARTPQI policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_SNIC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_SYM53C8XX_2 policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SCSI_UFSHCD policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SENSORS_LM93 policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SFC policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SOUND policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SSB policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_STMMAC_ETH policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SXGBE_ETH policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SYNCLINK policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_USB policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_VBOXGUEST policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_VOP policy<{'amd64': 'n', 'arm64': 'n'}> diff --git a/debian.hwe-5.15/config/OVERRIDES b/debian.hwe-5.15/config/OVERRIDES deleted file mode 100644 index 8bf1d35f4fef1..0000000000000 --- a/debian.hwe-5.15/config/OVERRIDES +++ /dev/null @@ -1,229 +0,0 @@ -# -# Disable various "net" modules which we don't use. -# -CONFIG_6LOWPAN=n -CONFIG_6LOWPAN_NHC=n -CONFIG_BT=n -CONFIG_CAIF=n -CONFIG_HAMRADIO=n -CONFIG_IEEE802154=n -CONFIG_NET_9P=n -CONFIG_NET_DSA=n -CONFIG_NFC=n -CONFIG_RFKILL=n -CONFIG_WIMAX=n -CONFIG_WIRELESS=n - -# -# Disable various "drivers" modules which we don't use. -# -CONFIG_ACCESSIBILITY=n -CONFIG_AMD_PMC=n -CONFIG_ATA=n -CONFIG_ATM_DRIVERS=n -CONFIG_AUXDISPLAY=n -CONFIG_BCMA=n -CONFIG_CONNECTOR=n -CONFIG_CRYPTO_HW=n -CONFIG_DAX=n -CONFIG_EISA=n -CONFIG_EXTCON=n -CONFIG_FB=n -CONFIG_FPGA=n -CONFIG_FSI=n -CONFIG_GNSS=n -CONFIG_GPIOLIB=n -CONFIG_GREYBUS=n -CONFIG_HSI=n -CONFIG_I3C=n -CONFIG_IDE=n -CONFIG_IIO=n -CONFIG_INFINIBAND=n -CONFIG_INTERCONNECT=n -CONFIG_IPACK_BUS=n -CONFIG_LIBNVDIMM=n -CONFIG_MAILBOX=n -CONFIG_MCB=n -CONFIG_MEDIA_SUPPORT=n -CONFIG_MEMSTICK=n -CONFIG_MMC=n -CONFIG_MTD=n -CONFIG_NEW_LEDS=n -CONFIG_NTB=n -CONFIG_NVM=n -CONFIG_NVMEM=n -CONFIG_OF=n -CONFIG_PARPORT=n -CONFIG_PARPORT_PANEL=n -CONFIG_PCCARD=n -CONFIG_PINCTRL=n -CONFIG_PMIC_OPREGION=n -CONFIG_PM_DEVFREQ=n -CONFIG_POWERCAP=n -CONFIG_PPS=n -CONFIG_RAPIDIO=n -CONFIG_REGULATOR=n -CONFIG_RESET_CONTROLLER=n -CONFIG_RTC_CLASS=n -CONFIG_SFI=n -CONFIG_SIOX=n -CONFIG_SLIMBUS=n -CONFIG_SOUNDWIRE=n -CONFIG_SPMI=n -CONFIG_STAGING=n -CONFIG_THERMAL=n -CONFIG_THUNDERBOLT=n -CONFIG_UIO=n -CONFIG_USB_SUPPORT=n -CONFIG_VFIO=n -CONFIG_W1=n -CONFIG_WLAN=n - -# -# Disable various filesystem which we don't use. -# -CONFIG_9P_FS=n -CONFIG_ADFS_FS=n -CONFIG_AFFS_FS=n -CONFIG_AFS_FS=n -CONFIG_AUFS_FS=n -CONFIG_BEFS_FS=n -CONFIG_BFS_FS=n -CONFIG_BTRFS_FS=n -CONFIG_CEPH_FS=n -CONFIG_CODA_FS=n -CONFIG_ECRYPT_FS=n -CONFIG_EFS_FS=n -CONFIG_EROFS_FS=n -CONFIG_EXFAT_FS=n -CONFIG_EXT2_FS=n -CONFIG_EXT3_FS=n -CONFIG_F2FS_FS=n -CONFIG_FAT_FS=n -CONFIG_GFS2_FS=n -CONFIG_HFSPLUS_FS=n -CONFIG_HFS_FS=n -CONFIG_HPFS_FS=n -CONFIG_JFFS2_FS=n -CONFIG_JFS_FS=n -CONFIG_MINIX_FS=n -CONFIG_MSDOS_FS=n -CONFIG_NILFS2_FS=n -CONFIG_OCFS2_FS=n -CONFIG_OMFS_FS=n -CONFIG_ORANGEFS_FS=n -CONFIG_QNX4FS_FS=n -CONFIG_QNX6FS_FS=n -CONFIG_REISERFS_FS=n -CONFIG_REISERFS_FS=n -CONFIG_ROMFS_FS=n -CONFIG_SYSV_FS=n -CONFIG_UBIFS_FS=n -CONFIG_UDF_FS=n -CONFIG_UFS_FS=n -CONFIG_VFAT_FS=n -CONFIG_VXFS_FS=n -CONFIG_XFS_FS=n - -# -# Disable other misc. modules which we don't use. -# -CONFIG_AGP=n -CONFIG_ANDROID=n -CONFIG_AQUANTIA_PHY=n -CONFIG_ATALK=n -CONFIG_BATMAN_ADV=n -CONFIG_BCACHE=n -CONFIG_BE2ISCSI=n -CONFIG_BE2NET=n -CONFIG_BLK_DEV_PCIESSD_MTIP32XX=n -CONFIG_BLK_DEV_RSXX=n -CONFIG_BNA=n -CONFIG_BNX2=n -CONFIG_BNX2X=n -CONFIG_BNXT=n -CONFIG_BROADCOM_PHY=n -CONFIG_CASSINI=n -CONFIG_CDROM=n -CONFIG_CEPH_LIB=n -CONFIG_CRAMFS=n -CONFIG_CYCLADES=n -CONFIG_DRM=n -CONFIG_ENIC=n -CONFIG_FM10K=n -CONFIG_FORCEDETH=n -CONFIG_GENWQE=n -CONFIG_GVE=n -CONFIG_HABANA_AI=n -CONFIG_HID=n -CONFIG_HIO=n -CONFIG_HWMON=n -CONFIG_IAVF=n -CONFIG_ICE=n -CONFIG_INFINIBAND=n -CONFIG_INTEL_IOATDMA=n -CONFIG_INTEL_MEI=n -CONFIG_IONIC=n -CONFIG_JME=n -CONFIG_KVM=n -CONFIG_LIBFC=n -CONFIG_LIQUIDIO=n -CONFIG_MEGARAID_LEGACY=n -CONFIG_MEGARAID_MAILBOX=n -CONFIG_MEGARAID_MM=n -CONFIG_MEGARAID_NEWGEN=n -CONFIG_MEGARAID_SAS=n -CONFIG_MFD_MADERA=n -CONFIG_MSCC_OCELOT_SWITCH=n -CONFIG_MWAVE=n -CONFIG_NETXEN_NIC=n -CONFIG_NET_TEAM=n -CONFIG_NET_VENDOR_AQUANTIA=n -CONFIG_NET_VENDOR_ATHEROS=n -CONFIG_NET_VENDOR_CAVIUM=n -CONFIG_NET_VENDOR_CHELSIO=n -CONFIG_NET_VENDOR_CHELSIO=n -CONFIG_NET_VENDOR_MARVELL=n -CONFIG_NET_VENDOR_MICREL=n -CONFIG_NET_VENDOR_MYRI=n -CONFIG_NET_VENDOR_NETERION=n -CONFIG_NET_VENDOR_ROCKER=n -CONFIG_NFC=n -CONFIG_NFP=n -CONFIG_NOZOMI=n -CONFIG_QED=n -CONFIG_QLCNIC=n -CONFIG_RDS=n -CONFIG_REALTEK_PHY=n -CONFIG_SCIF=n -CONFIG_SCSI_ADVANSYS=n -CONFIG_SCSI_AIC7XXX=n -CONFIG_SCSI_AIC94XX=n -CONFIG_SCSI_ARCMSR=n -CONFIG_SCSI_BFA_FC=n -CONFIG_SCSI_ESAS2R=n -CONFIG_SCSI_GDTH=n -CONFIG_SCSI_HPSA=n -CONFIG_SCSI_IPS=n -CONFIG_SCSI_LPFC=n -CONFIG_SCSI_MVSAS=n -CONFIG_SCSI_MYRB=n -CONFIG_SCSI_MYRS=n -CONFIG_SCSI_PM8001=n -CONFIG_SCSI_PMCRAID=n -CONFIG_SCSI_QLA_FC=n -CONFIG_SCSI_SMARTPQI=n -CONFIG_SCSI_SNIC=n -CONFIG_SCSI_SYM53C8XX_2=n -CONFIG_SCSI_UFSHCD=n -CONFIG_SENSORS_LM93=n -CONFIG_SFC=n -CONFIG_SOUND=n -CONFIG_SSB=n -CONFIG_STMMAC_ETH=n -CONFIG_SXGBE_ETH=n -CONFIG_SYNCLINK=n -CONFIG_SYNCLINK=n -CONFIG_USB=n -CONFIG_VBOXGUEST=n -CONFIG_VOP=n From b19532a5b76d978c6fb84701ca3d0e8f3ca5bd9d Mon Sep 17 00:00:00 2001 From: Palash Gandhi <87093175+palash-delphix@users.noreply.github.com> Date: Tue, 19 Sep 2023 08:03:17 -0700 Subject: [PATCH 19/24] DLPX-87970 Move Delphix annotations to linux-pkg to reduce merge conflicts (#31) PR URL: https://www.github.com/delphix/linux-kernel-generic/pull/31 --- debian.delphix/config/annotations | 230 ------------------------------ 1 file changed, 230 deletions(-) delete mode 100644 debian.delphix/config/annotations diff --git a/debian.delphix/config/annotations b/debian.delphix/config/annotations deleted file mode 100644 index e8822a02b2df2..0000000000000 --- a/debian.delphix/config/annotations +++ /dev/null @@ -1,230 +0,0 @@ -# Menu: HEADER -# FORMAT: 4 -# ARCH: amd64 -# FLAVOUR: amd64-generic - -# -# Disable various "net" modules which we don't use. -# -CONFIG_6LOWPAN policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_6LOWPAN_NHC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BT policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_CAIF policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_HAMRADIO policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_IEEE802154 policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_9P policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_DSA policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NFC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_RFKILL policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_WIMAX policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_WIRELESS policy<{'amd64': 'n', 'arm64': 'n'}> - -# -# Disable various "drivers" modules which we don't use. -# -CONFIG_ACCESSIBILITY policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_AMD_PMC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_ATA policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_ATM_DRIVERS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_AUXDISPLAY policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BCMA policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_CONNECTOR policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_DAX policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_EISA policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_EXTCON policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_FB policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_FPGA policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_FSI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_GNSS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_GPIOLIB policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_GREYBUS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_HSI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_I3C policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_IDE policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_IIO policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_INFINIBAND policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_INTERCONNECT policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_IPACK_BUS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_LIBNVDIMM policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MAILBOX policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MCB policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MEDIA_SUPPORT policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MEMSTICK policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MMC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MTD policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NEW_LEDS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NTB policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NVM policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NVMEM policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_OF policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_PARPORT policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_PARPORT_PANEL policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_PCCARD policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_PINCTRL policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_PMIC_OPREGION policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_PM_DEVFREQ policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_POWERCAP policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_PPS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_RAPIDIO policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_REGULATOR policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_RESET_CONTROLLER policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_RTC_CLASS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SFI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SIOX policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SLIMBUS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SOUNDWIRE policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SPMI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_STAGING policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_THERMAL policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_THUNDERBOLT policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_UIO policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_USB_SUPPORT policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_VFIO policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_W1 policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_WLAN policy<{'amd64': 'n', 'arm64': 'n'}> - -# -# Disable various filesystem which we don't use. -# -CONFIG_9P_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_ADFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_AFFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_AFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_AUFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BEFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BTRFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_CEPH_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_CODA_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_ECRYPT_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_EFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_EROFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_EXFAT_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_EXT2_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_EXT3_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_F2FS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_FAT_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_GFS2_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_HFSPLUS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_HFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_HPFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_JFFS2_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_JFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MINIX_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MSDOS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NILFS2_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_OCFS2_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_OMFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_ORANGEFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_QNX4FS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_QNX6FS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_REISERFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_REISERFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_ROMFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SYSV_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_UBIFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_UDF_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_UFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_VFAT_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_VXFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_XFS_FS policy<{'amd64': 'n', 'arm64': 'n'}> - -# -# Disable other misc. modules which we don't use. -# -CONFIG_AGP policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_ANDROID policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_AQUANTIA_PHY policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_ATALK policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BATMAN_ADV policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BCACHE policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BE2ISCSI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BE2NET policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BLK_DEV_PCIESSD_MTIP32XX policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BLK_DEV_RSXX policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BNA policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BNX2 policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BNX2X policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BNXT policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_BROADCOM_PHY policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_CASSINI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_CDROM policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_CEPH_LIB policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_CRAMFS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_CYCLADES policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_DRM policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_ENIC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_FM10K policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_FORCEDETH policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_GENWQE policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_GVE policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_HABANA_AI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_HID policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_HIO policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_HWMON policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_IAVF policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_ICE policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_INTEL_IOATDMA policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_INTEL_MEI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_IONIC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_JME policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_KVM policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_LIBFC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_LIQUIDIO policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MEGARAID_LEGACY policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MEGARAID_MAILBOX policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MEGARAID_MM policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MEGARAID_NEWGEN policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MEGARAID_SAS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MFD_MADERA policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MSCC_OCELOT_SWITCH policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_MWAVE policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NETXEN_NIC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_TEAM policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_VENDOR_AQUANTIA policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_VENDOR_ATHEROS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_VENDOR_CAVIUM policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_VENDOR_CHELSIO policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_VENDOR_CHELSIO policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_VENDOR_MARVELL policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_VENDOR_MICREL policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_VENDOR_MYRI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_VENDOR_NETERION policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NET_VENDOR_ROCKER policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NFP policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_NOZOMI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_QED policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_QLCNIC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_RDS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_REALTEK_PHY policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCIF policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_ADVANSYS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_AIC7XXX policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_AIC94XX policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_ARCMSR policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_BFA_FC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_ESAS2R policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_GDTH policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_HPSA policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_IPS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_LPFC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_MVSAS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_MYRB policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_MYRS policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_PM8001 policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_PMCRAID policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_QLA_FC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_SMARTPQI policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_SNIC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_SYM53C8XX_2 policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SCSI_UFSHCD policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SENSORS_LM93 policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SFC policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SOUND policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SSB policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_STMMAC_ETH policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SXGBE_ETH policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_SYNCLINK policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_USB policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_VBOXGUEST policy<{'amd64': 'n', 'arm64': 'n'}> -CONFIG_VOP policy<{'amd64': 'n', 'arm64': 'n'}> From 814eb1523f7ce1c5685347eecbac7499beaf2517 Mon Sep 17 00:00:00 2001 From: Paul Dagnelie Date: Fri, 9 Aug 2024 13:57:25 -0700 Subject: [PATCH 20/24] DLPX-91889 scsi: target: iscsi: Handle abort for WRITE_PENDING cmds (#40) Link: https://lore.kernel.org/r/20230319015620.96006-10-michael.christie@oracle.com Signed-off-by: Dmitry Bogdanov Signed-off-by: Mike Christie Signed-off-by: Martin K. Petersen Co-authored-by: Dmitry Bogdanov From 343074a074a5496bc9482e4953f9719bc6a7b9d1 Mon Sep 17 00:00:00 2001 From: Palash Gandhi Date: Wed, 16 Oct 2024 17:42:09 -0700 Subject: [PATCH 21/24] Reintroduce fix from DLPX-87344 to build only with amd64 annotations --- debian.master/config/annotations | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian.master/config/annotations b/debian.master/config/annotations index a6af35a9299a2..bf3686b1e3109 100644 --- a/debian.master/config/annotations +++ b/debian.master/config/annotations @@ -1,7 +1,7 @@ # Menu: HEADER # FORMAT: 4 -# ARCH: amd64 arm64 armhf ppc64el riscv64 s390x -# FLAVOUR: amd64-generic arm64-generic arm64-generic-64k armhf-generic ppc64el-generic riscv64-generic s390x-generic +# ARCH: amd64 +# FLAVOUR: amd64-generic CONFIG_ACCESSIBILITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 'riscv64': 'y', 's390x': 'n'}> CONFIG_ACCESSIBILITY note<'LP: #1967702'> From 52c31c2959043b32853ba1de31f55c38cd3d25f1 Mon Sep 17 00:00:00 2001 From: Palash Gandhi Date: Thu, 17 Oct 2024 09:07:14 -0700 Subject: [PATCH 22/24] Extract PKG_ABI from mutated string --- debian/rules.d/0-common-vars.mk | 2 +- include/asm-generic/mshyperv.h | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/debian/rules.d/0-common-vars.mk b/debian/rules.d/0-common-vars.mk index 5cd38f6f1b6c9..98347b798c5f1 100644 --- a/debian/rules.d/0-common-vars.mk +++ b/debian/rules.d/0-common-vars.mk @@ -201,7 +201,7 @@ kmake = make ARCH=$(build_arch) \ KERNELRELEASE=$(abi_release)-$(target_flavour) \ CONFIG_DEBUG_SECTION_MISMATCH=y \ KBUILD_BUILD_VERSION="$(uploadnum)" \ - CFLAGS_MODULE="-DPKG_ABI=$(abinum)" \ + CFLAGS_MODULE='-DPKG_ABI=\"$(abinum)\"' \ PYTHON=$(PYTHON) ifneq ($(LOCAL_ENV_CC),) kmake += CC="$(LOCAL_ENV_CC)" DISTCC_HOSTS="$(LOCAL_ENV_DISTCC_HOSTS)" diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index 1cfc69cb7efbe..ee759c8245f64 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -18,6 +18,7 @@ #ifndef _ASM_GENERIC_MSHYPERV_H #define _ASM_GENERIC_MSHYPERV_H +#include #include #include #include @@ -120,7 +121,7 @@ static inline u64 hv_do_rep_hypercall(u16 code, u16 rep_count, u16 varhead_size, * Preserve the ability to 'make deb-pkg' since PKG_ABI is provided * by the Ubuntu build rules. */ -#define PKG_ABI 0 +#define PKG_ABI "0" #endif /* Generate the guest OS identifier as described in the Hyper-V TLFS */ @@ -130,7 +131,15 @@ static inline u64 hv_generate_guest_id(u64 kernel_version) guest_id = (((u64)HV_LINUX_VENDOR_ID) << 48); guest_id |= (kernel_version << 16); - guest_id |= PKG_ABI; + /* + * Delphix mutates the ABI number by appending a date and the commit hash. Strip it. + */ + char *token; + char *pkg_abi_str = PKG_ABI; + token = strsep(&pkg_abi_str, "-"); + unsigned long abi_number = simple_strtoul(token, NULL, 10); + guest_id |= (abi_number << 8); + return guest_id; } From 436f4ae50770d1474612ca9b4d30b8dea8974a70 Mon Sep 17 00:00:00 2001 From: Palash Gandhi Date: Wed, 23 Oct 2024 12:46:18 -0700 Subject: [PATCH 23/24] Revert "DLPX-84985 target: iscsi: fix deadlock in the iSCSI login code (#22)" Upstream fixed this bug via https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/commit/?id=13247018d68f21e7132924b9853f7e2c423588b6 --- drivers/target/iscsi/iscsi_target_nego.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/drivers/target/iscsi/iscsi_target_nego.c b/drivers/target/iscsi/iscsi_target_nego.c index 31fe8fb8be75e..5cddf8e60b3e6 100644 --- a/drivers/target/iscsi/iscsi_target_nego.c +++ b/drivers/target/iscsi/iscsi_target_nego.c @@ -472,18 +472,12 @@ static int iscsi_target_do_login(struct iscsit_conn *, struct iscsi_login *); static bool __iscsi_target_sk_check_close(struct sock *sk) { - switch (sk->sk_state) { - case TCP_FIN_WAIT1: - case TCP_FIN_WAIT2: - case TCP_CLOSE_WAIT: - case TCP_LAST_ACK: - case TCP_CLOSE: - pr_debug("__iscsi_target_sk_check_close: socket closing," + if (sk->sk_state == TCP_CLOSE_WAIT || sk->sk_state == TCP_CLOSE) { + pr_debug("__iscsi_target_sk_check_close: TCP_CLOSE_WAIT|TCP_CLOSE," "returning TRUE\n"); return true; - default: - return false; } + return false; } static bool iscsi_target_sk_check_close(struct iscsit_conn *conn) @@ -645,7 +639,6 @@ static void iscsi_target_do_login_rx(struct work_struct *work) } else if (rc == 1) { iscsit_stop_login_timer(conn); cancel_delayed_work(&conn->login_work); - iscsit_stop_login_timer(conn); iscsi_target_nego_release(conn); iscsi_post_login_handler(np, conn, zero_tsih); iscsit_deaccess_np(np, tpg, tpg_np); @@ -656,7 +649,6 @@ static void iscsi_target_do_login_rx(struct work_struct *work) iscsi_target_restore_sock_callbacks(conn); iscsit_stop_login_timer(conn); cancel_delayed_work(&conn->login_work); - iscsit_stop_login_timer(conn); iscsi_target_login_drop(conn, login); iscsit_deaccess_np(np, tpg, tpg_np); } @@ -1360,9 +1352,6 @@ int iscsi_target_start_negotiation( set_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags); write_unlock_bh(&sk->sk_callback_lock); } - - iscsit_start_login_timer(conn); - /* * If iscsi_target_do_login returns zero to signal more PDU * exchanges are required to complete the login, go ahead and From aab3634f39e802c8b997d4ede7900b7cf55afed8 Mon Sep 17 00:00:00 2001 From: Tony Nguyen Date: Thu, 13 Mar 2025 14:40:26 -0600 Subject: [PATCH 24/24] Enable EFI debug kernel build variable PR URL: https://www.github.com/delphix/linux-kernel-generic/pull/46 --- debian.master/config/annotations | 4 +- include/uapi/linux/netfilter/xt_connmark.h | 40 +-- net/netfilter/xt_dscp.c | 149 ++++++--- net/netfilter/xt_hl.c | 164 +++++++--- net/netfilter/xt_rateest.c | 282 +++++++++++------- ...Z6.0+pooncelock+pooncelock+pombonce.litmus | 12 +- 6 files changed, 410 insertions(+), 241 deletions(-) diff --git a/debian.master/config/annotations b/debian.master/config/annotations index bf3686b1e3109..401fdaec8d8fb 100644 --- a/debian.master/config/annotations +++ b/debian.master/config/annotations @@ -3806,7 +3806,7 @@ CONFIG_DEBUG_CGROUP_REF policy<{'amd64': 'n', 'arm64': ' CONFIG_DEBUG_CLOSURES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 'riscv64': 'n', 's390x': 'n'}> CONFIG_DEBUG_DEVRES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 'riscv64': 'n', 's390x': 'n'}> CONFIG_DEBUG_DRIVER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 'riscv64': 'n', 's390x': 'n'}> -CONFIG_DEBUG_EFI policy<{'arm64': 'n'}> +CONFIG_DEBUG_EFI policy<{'amd64': 'y', 'arm64': 'n'}> CONFIG_DEBUG_ENTRY policy<{'amd64': 'n', 's390x': 'n'}> CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B policy<{'amd64': 'n', 'arm64': 'n', 'ppc64el': 'n', 'riscv64': 'n', 's390x': 'n'}> CONFIG_DEBUG_FORCE_WEAK_PER_CPU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 'riscv64': 'n', 's390x': 'n'}> @@ -4758,7 +4758,7 @@ CONFIG_EFI_SECRET policy<{'amd64': 'm'}> CONFIG_EFI_SOFT_RESERVE policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_EFI_STUB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'riscv64': 'y'}> CONFIG_EFI_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'riscv64': 'm'}> -CONFIG_EFI_VARS_PSTORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'riscv64': 'm'}> +CONFIG_EFI_VARS_PSTORE policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'riscv64': 'm'}> CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'riscv64': 'n'}> CONFIG_EFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 'riscv64': 'm', 's390x': 'n'}> CONFIG_EINT_MTK policy<{'arm64': 'y', 'armhf': 'y'}> diff --git a/include/uapi/linux/netfilter/xt_connmark.h b/include/uapi/linux/netfilter/xt_connmark.h index 41b578ccd03b8..36cc956ead1ae 100644 --- a/include/uapi/linux/netfilter/xt_connmark.h +++ b/include/uapi/linux/netfilter/xt_connmark.h @@ -1,37 +1,7 @@ -/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ -/* Copyright (C) 2002,2004 MARA Systems AB - * by Henrik Nordstrom - */ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +#ifndef _XT_CONNMARK_H_target +#define _XT_CONNMARK_H_target -#ifndef _XT_CONNMARK_H -#define _XT_CONNMARK_H +#include -#include - -enum { - XT_CONNMARK_SET = 0, - XT_CONNMARK_SAVE, - XT_CONNMARK_RESTORE -}; - -enum { - D_SHIFT_LEFT = 0, - D_SHIFT_RIGHT, -}; - -struct xt_connmark_tginfo1 { - __u32 ctmark, ctmask, nfmask; - __u8 mode; -}; - -struct xt_connmark_tginfo2 { - __u32 ctmark, ctmask, nfmask; - __u8 shift_dir, shift_bits, mode; -}; - -struct xt_connmark_mtinfo1 { - __u32 mark, mask; - __u8 invert; -}; - -#endif /*_XT_CONNMARK_H*/ +#endif /*_XT_CONNMARK_H_target*/ diff --git a/net/netfilter/xt_dscp.c b/net/netfilter/xt_dscp.c index fb0169a8f9bbd..cfa44515ab72d 100644 --- a/net/netfilter/xt_dscp.c +++ b/net/netfilter/xt_dscp.c @@ -1,8 +1,11 @@ // SPDX-License-Identifier: GPL-2.0-only -/* IP tables module for matching the value of the IPv4/IPv6 DSCP field +/* x_tables module for setting the IPv4/IPv6 DSCP field, Version 1.8 * * (C) 2002 by Harald Welte - */ + * based on ipt_FTOS.c (C) 2000 by Matthew G. Marsh + * + * See RFC2474 for a description of the DSCP field within the IP Header. +*/ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include #include @@ -11,100 +14,148 @@ #include #include -#include +#include MODULE_AUTHOR("Harald Welte "); -MODULE_DESCRIPTION("Xtables: DSCP/TOS field match"); +MODULE_DESCRIPTION("Xtables: DSCP/TOS field modification"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("ipt_dscp"); -MODULE_ALIAS("ip6t_dscp"); -MODULE_ALIAS("ipt_tos"); -MODULE_ALIAS("ip6t_tos"); +MODULE_ALIAS("ipt_DSCP"); +MODULE_ALIAS("ip6t_DSCP"); +MODULE_ALIAS("ipt_TOS"); +MODULE_ALIAS("ip6t_TOS"); + +#define XT_DSCP_ECN_MASK 3u -static bool -dscp_mt(const struct sk_buff *skb, struct xt_action_param *par) +static unsigned int +dscp_tg(struct sk_buff *skb, const struct xt_action_param *par) { - const struct xt_dscp_info *info = par->matchinfo; + const struct xt_DSCP_info *dinfo = par->targinfo; u_int8_t dscp = ipv4_get_dsfield(ip_hdr(skb)) >> XT_DSCP_SHIFT; - return (dscp == info->dscp) ^ !!info->invert; + if (dscp != dinfo->dscp) { + if (skb_ensure_writable(skb, sizeof(struct iphdr))) + return NF_DROP; + + ipv4_change_dsfield(ip_hdr(skb), XT_DSCP_ECN_MASK, + dinfo->dscp << XT_DSCP_SHIFT); + + } + return XT_CONTINUE; } -static bool -dscp_mt6(const struct sk_buff *skb, struct xt_action_param *par) +static unsigned int +dscp_tg6(struct sk_buff *skb, const struct xt_action_param *par) { - const struct xt_dscp_info *info = par->matchinfo; + const struct xt_DSCP_info *dinfo = par->targinfo; u_int8_t dscp = ipv6_get_dsfield(ipv6_hdr(skb)) >> XT_DSCP_SHIFT; - return (dscp == info->dscp) ^ !!info->invert; + if (dscp != dinfo->dscp) { + if (skb_ensure_writable(skb, sizeof(struct ipv6hdr))) + return NF_DROP; + + ipv6_change_dsfield(ipv6_hdr(skb), XT_DSCP_ECN_MASK, + dinfo->dscp << XT_DSCP_SHIFT); + } + return XT_CONTINUE; } -static int dscp_mt_check(const struct xt_mtchk_param *par) +static int dscp_tg_check(const struct xt_tgchk_param *par) { - const struct xt_dscp_info *info = par->matchinfo; + const struct xt_DSCP_info *info = par->targinfo; if (info->dscp > XT_DSCP_MAX) return -EDOM; - return 0; } -static bool tos_mt(const struct sk_buff *skb, struct xt_action_param *par) +static unsigned int +tos_tg(struct sk_buff *skb, const struct xt_action_param *par) { - const struct xt_tos_match_info *info = par->matchinfo; - - if (xt_family(par) == NFPROTO_IPV4) - return ((ip_hdr(skb)->tos & info->tos_mask) == - info->tos_value) ^ !!info->invert; - else - return ((ipv6_get_dsfield(ipv6_hdr(skb)) & info->tos_mask) == - info->tos_value) ^ !!info->invert; + const struct xt_tos_target_info *info = par->targinfo; + struct iphdr *iph = ip_hdr(skb); + u_int8_t orig, nv; + + orig = ipv4_get_dsfield(iph); + nv = (orig & ~info->tos_mask) ^ info->tos_value; + + if (orig != nv) { + if (skb_ensure_writable(skb, sizeof(struct iphdr))) + return NF_DROP; + iph = ip_hdr(skb); + ipv4_change_dsfield(iph, 0, nv); + } + + return XT_CONTINUE; +} + +static unsigned int +tos_tg6(struct sk_buff *skb, const struct xt_action_param *par) +{ + const struct xt_tos_target_info *info = par->targinfo; + struct ipv6hdr *iph = ipv6_hdr(skb); + u_int8_t orig, nv; + + orig = ipv6_get_dsfield(iph); + nv = (orig & ~info->tos_mask) ^ info->tos_value; + + if (orig != nv) { + if (skb_ensure_writable(skb, sizeof(struct iphdr))) + return NF_DROP; + iph = ipv6_hdr(skb); + ipv6_change_dsfield(iph, 0, nv); + } + + return XT_CONTINUE; } -static struct xt_match dscp_mt_reg[] __read_mostly = { +static struct xt_target dscp_tg_reg[] __read_mostly = { { - .name = "dscp", + .name = "DSCP", .family = NFPROTO_IPV4, - .checkentry = dscp_mt_check, - .match = dscp_mt, - .matchsize = sizeof(struct xt_dscp_info), + .checkentry = dscp_tg_check, + .target = dscp_tg, + .targetsize = sizeof(struct xt_DSCP_info), + .table = "mangle", .me = THIS_MODULE, }, { - .name = "dscp", + .name = "DSCP", .family = NFPROTO_IPV6, - .checkentry = dscp_mt_check, - .match = dscp_mt6, - .matchsize = sizeof(struct xt_dscp_info), + .checkentry = dscp_tg_check, + .target = dscp_tg6, + .targetsize = sizeof(struct xt_DSCP_info), + .table = "mangle", .me = THIS_MODULE, }, { - .name = "tos", + .name = "TOS", .revision = 1, .family = NFPROTO_IPV4, - .match = tos_mt, - .matchsize = sizeof(struct xt_tos_match_info), + .table = "mangle", + .target = tos_tg, + .targetsize = sizeof(struct xt_tos_target_info), .me = THIS_MODULE, }, { - .name = "tos", + .name = "TOS", .revision = 1, .family = NFPROTO_IPV6, - .match = tos_mt, - .matchsize = sizeof(struct xt_tos_match_info), + .table = "mangle", + .target = tos_tg6, + .targetsize = sizeof(struct xt_tos_target_info), .me = THIS_MODULE, }, }; -static int __init dscp_mt_init(void) +static int __init dscp_tg_init(void) { - return xt_register_matches(dscp_mt_reg, ARRAY_SIZE(dscp_mt_reg)); + return xt_register_targets(dscp_tg_reg, ARRAY_SIZE(dscp_tg_reg)); } -static void __exit dscp_mt_exit(void) +static void __exit dscp_tg_exit(void) { - xt_unregister_matches(dscp_mt_reg, ARRAY_SIZE(dscp_mt_reg)); + xt_unregister_targets(dscp_tg_reg, ARRAY_SIZE(dscp_tg_reg)); } -module_init(dscp_mt_init); -module_exit(dscp_mt_exit); +module_init(dscp_tg_init); +module_exit(dscp_tg_exit); diff --git a/net/netfilter/xt_hl.c b/net/netfilter/xt_hl.c index c1a70f8f04417..7873b834c3004 100644 --- a/net/netfilter/xt_hl.c +++ b/net/netfilter/xt_hl.c @@ -1,93 +1,159 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * IP tables module for matching the value of the TTL - * (C) 2000,2001 by Harald Welte + * TTL modification target for IP tables + * (C) 2000,2005 by Harald Welte * - * Hop Limit matching module - * (C) 2001-2002 Maciej Soltysiak + * Hop Limit modification target for ip6tables + * Maciej Soltysiak */ - -#include -#include +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include #include +#include +#include +#include #include -#include -#include +#include +#include +MODULE_AUTHOR("Harald Welte "); MODULE_AUTHOR("Maciej Soltysiak "); -MODULE_DESCRIPTION("Xtables: Hoplimit/TTL field match"); +MODULE_DESCRIPTION("Xtables: Hoplimit/TTL Limit field modification target"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("ipt_ttl"); -MODULE_ALIAS("ip6t_hl"); -static bool ttl_mt(const struct sk_buff *skb, struct xt_action_param *par) +static unsigned int +ttl_tg(struct sk_buff *skb, const struct xt_action_param *par) { - const struct ipt_ttl_info *info = par->matchinfo; - const u8 ttl = ip_hdr(skb)->ttl; + struct iphdr *iph; + const struct ipt_TTL_info *info = par->targinfo; + int new_ttl; + + if (skb_ensure_writable(skb, sizeof(*iph))) + return NF_DROP; + + iph = ip_hdr(skb); switch (info->mode) { - case IPT_TTL_EQ: - return ttl == info->ttl; - case IPT_TTL_NE: - return ttl != info->ttl; - case IPT_TTL_LT: - return ttl < info->ttl; - case IPT_TTL_GT: - return ttl > info->ttl; + case IPT_TTL_SET: + new_ttl = info->ttl; + break; + case IPT_TTL_INC: + new_ttl = iph->ttl + info->ttl; + if (new_ttl > 255) + new_ttl = 255; + break; + case IPT_TTL_DEC: + new_ttl = iph->ttl - info->ttl; + if (new_ttl < 0) + new_ttl = 0; + break; + default: + new_ttl = iph->ttl; + break; } - return false; + if (new_ttl != iph->ttl) { + csum_replace2(&iph->check, htons(iph->ttl << 8), + htons(new_ttl << 8)); + iph->ttl = new_ttl; + } + + return XT_CONTINUE; } -static bool hl_mt6(const struct sk_buff *skb, struct xt_action_param *par) +static unsigned int +hl_tg6(struct sk_buff *skb, const struct xt_action_param *par) { - const struct ip6t_hl_info *info = par->matchinfo; - const struct ipv6hdr *ip6h = ipv6_hdr(skb); + struct ipv6hdr *ip6h; + const struct ip6t_HL_info *info = par->targinfo; + int new_hl; + + if (skb_ensure_writable(skb, sizeof(*ip6h))) + return NF_DROP; + + ip6h = ipv6_hdr(skb); switch (info->mode) { - case IP6T_HL_EQ: - return ip6h->hop_limit == info->hop_limit; - case IP6T_HL_NE: - return ip6h->hop_limit != info->hop_limit; - case IP6T_HL_LT: - return ip6h->hop_limit < info->hop_limit; - case IP6T_HL_GT: - return ip6h->hop_limit > info->hop_limit; + case IP6T_HL_SET: + new_hl = info->hop_limit; + break; + case IP6T_HL_INC: + new_hl = ip6h->hop_limit + info->hop_limit; + if (new_hl > 255) + new_hl = 255; + break; + case IP6T_HL_DEC: + new_hl = ip6h->hop_limit - info->hop_limit; + if (new_hl < 0) + new_hl = 0; + break; + default: + new_hl = ip6h->hop_limit; + break; } - return false; + ip6h->hop_limit = new_hl; + + return XT_CONTINUE; +} + +static int ttl_tg_check(const struct xt_tgchk_param *par) +{ + const struct ipt_TTL_info *info = par->targinfo; + + if (info->mode > IPT_TTL_MAXMODE) + return -EINVAL; + if (info->mode != IPT_TTL_SET && info->ttl == 0) + return -EINVAL; + return 0; +} + +static int hl_tg6_check(const struct xt_tgchk_param *par) +{ + const struct ip6t_HL_info *info = par->targinfo; + + if (info->mode > IP6T_HL_MAXMODE) + return -EINVAL; + if (info->mode != IP6T_HL_SET && info->hop_limit == 0) + return -EINVAL; + return 0; } -static struct xt_match hl_mt_reg[] __read_mostly = { +static struct xt_target hl_tg_reg[] __read_mostly = { { - .name = "ttl", + .name = "TTL", .revision = 0, .family = NFPROTO_IPV4, - .match = ttl_mt, - .matchsize = sizeof(struct ipt_ttl_info), + .target = ttl_tg, + .targetsize = sizeof(struct ipt_TTL_info), + .table = "mangle", + .checkentry = ttl_tg_check, .me = THIS_MODULE, }, { - .name = "hl", + .name = "HL", .revision = 0, .family = NFPROTO_IPV6, - .match = hl_mt6, - .matchsize = sizeof(struct ip6t_hl_info), + .target = hl_tg6, + .targetsize = sizeof(struct ip6t_HL_info), + .table = "mangle", + .checkentry = hl_tg6_check, .me = THIS_MODULE, }, }; -static int __init hl_mt_init(void) +static int __init hl_tg_init(void) { - return xt_register_matches(hl_mt_reg, ARRAY_SIZE(hl_mt_reg)); + return xt_register_targets(hl_tg_reg, ARRAY_SIZE(hl_tg_reg)); } -static void __exit hl_mt_exit(void) +static void __exit hl_tg_exit(void) { - xt_unregister_matches(hl_mt_reg, ARRAY_SIZE(hl_mt_reg)); + xt_unregister_targets(hl_tg_reg, ARRAY_SIZE(hl_tg_reg)); } -module_init(hl_mt_init); -module_exit(hl_mt_exit); +module_init(hl_tg_init); +module_exit(hl_tg_exit); +MODULE_ALIAS("ipt_TTL"); +MODULE_ALIAS("ip6t_HL"); diff --git a/net/netfilter/xt_rateest.c b/net/netfilter/xt_rateest.c index 72324bd976af8..80f6624e23554 100644 --- a/net/netfilter/xt_rateest.c +++ b/net/netfilter/xt_rateest.c @@ -5,149 +5,229 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include #include -#include +#include #include +#define RATEEST_HSIZE 16 -static bool -xt_rateest_mt(const struct sk_buff *skb, struct xt_action_param *par) +struct xt_rateest_net { + struct mutex hash_lock; + struct hlist_head hash[RATEEST_HSIZE]; +}; + +static unsigned int xt_rateest_id; + +static unsigned int jhash_rnd __read_mostly; + +static unsigned int xt_rateest_hash(const char *name) { - const struct xt_rateest_match_info *info = par->matchinfo; - struct gnet_stats_rate_est64 sample = {0}; - u_int32_t bps1, bps2, pps1, pps2; - bool ret = true; - - gen_estimator_read(&info->est1->rate_est, &sample); - - if (info->flags & XT_RATEEST_MATCH_DELTA) { - bps1 = info->bps1 >= sample.bps ? info->bps1 - sample.bps : 0; - pps1 = info->pps1 >= sample.pps ? info->pps1 - sample.pps : 0; - } else { - bps1 = sample.bps; - pps1 = sample.pps; - } + return jhash(name, sizeof_field(struct xt_rateest, name), jhash_rnd) & + (RATEEST_HSIZE - 1); +} + +static void xt_rateest_hash_insert(struct xt_rateest_net *xn, + struct xt_rateest *est) +{ + unsigned int h; + + h = xt_rateest_hash(est->name); + hlist_add_head(&est->list, &xn->hash[h]); +} - if (info->flags & XT_RATEEST_MATCH_ABS) { - bps2 = info->bps2; - pps2 = info->pps2; - } else { - gen_estimator_read(&info->est2->rate_est, &sample); - - if (info->flags & XT_RATEEST_MATCH_DELTA) { - bps2 = info->bps2 >= sample.bps ? info->bps2 - sample.bps : 0; - pps2 = info->pps2 >= sample.pps ? info->pps2 - sample.pps : 0; - } else { - bps2 = sample.bps; - pps2 = sample.pps; +static struct xt_rateest *__xt_rateest_lookup(struct xt_rateest_net *xn, + const char *name) +{ + struct xt_rateest *est; + unsigned int h; + + h = xt_rateest_hash(name); + hlist_for_each_entry(est, &xn->hash[h], list) { + if (strcmp(est->name, name) == 0) { + est->refcnt++; + return est; } } - switch (info->mode) { - case XT_RATEEST_MATCH_LT: - if (info->flags & XT_RATEEST_MATCH_BPS) - ret &= bps1 < bps2; - if (info->flags & XT_RATEEST_MATCH_PPS) - ret &= pps1 < pps2; - break; - case XT_RATEEST_MATCH_GT: - if (info->flags & XT_RATEEST_MATCH_BPS) - ret &= bps1 > bps2; - if (info->flags & XT_RATEEST_MATCH_PPS) - ret &= pps1 > pps2; - break; - case XT_RATEEST_MATCH_EQ: - if (info->flags & XT_RATEEST_MATCH_BPS) - ret &= bps1 == bps2; - if (info->flags & XT_RATEEST_MATCH_PPS) - ret &= pps1 == pps2; - break; - } + return NULL; +} - ret ^= info->flags & XT_RATEEST_MATCH_INVERT ? true : false; - return ret; +struct xt_rateest *xt_rateest_lookup(struct net *net, const char *name) +{ + struct xt_rateest_net *xn = net_generic(net, xt_rateest_id); + struct xt_rateest *est; + + mutex_lock(&xn->hash_lock); + est = __xt_rateest_lookup(xn, name); + mutex_unlock(&xn->hash_lock); + return est; } +EXPORT_SYMBOL_GPL(xt_rateest_lookup); -static int xt_rateest_mt_checkentry(const struct xt_mtchk_param *par) +void xt_rateest_put(struct net *net, struct xt_rateest *est) { - struct xt_rateest_match_info *info = par->matchinfo; - struct xt_rateest *est1, *est2; - int ret = -EINVAL; + struct xt_rateest_net *xn = net_generic(net, xt_rateest_id); + + mutex_lock(&xn->hash_lock); + if (--est->refcnt == 0) { + hlist_del(&est->list); + gen_kill_estimator(&est->rate_est); + /* + * gen_estimator est_timer() might access est->lock or bstats, + * wait a RCU grace period before freeing 'est' + */ + kfree_rcu(est, rcu); + } + mutex_unlock(&xn->hash_lock); +} +EXPORT_SYMBOL_GPL(xt_rateest_put); - if (hweight32(info->flags & (XT_RATEEST_MATCH_ABS | - XT_RATEEST_MATCH_REL)) != 1) - goto err1; +static unsigned int +xt_rateest_tg(struct sk_buff *skb, const struct xt_action_param *par) +{ + const struct xt_rateest_target_info *info = par->targinfo; + struct gnet_stats_basic_sync *stats = &info->est->bstats; - if (!(info->flags & (XT_RATEEST_MATCH_BPS | XT_RATEEST_MATCH_PPS))) - goto err1; + spin_lock_bh(&info->est->lock); + u64_stats_add(&stats->bytes, skb->len); + u64_stats_inc(&stats->packets); + spin_unlock_bh(&info->est->lock); - switch (info->mode) { - case XT_RATEEST_MATCH_EQ: - case XT_RATEEST_MATCH_LT: - case XT_RATEEST_MATCH_GT: - break; - default: - goto err1; + return XT_CONTINUE; +} + +static int xt_rateest_tg_checkentry(const struct xt_tgchk_param *par) +{ + struct xt_rateest_net *xn = net_generic(par->net, xt_rateest_id); + struct xt_rateest_target_info *info = par->targinfo; + struct xt_rateest *est; + struct { + struct nlattr opt; + struct gnet_estimator est; + } cfg; + int ret; + + if (strnlen(info->name, sizeof(est->name)) >= sizeof(est->name)) + return -ENAMETOOLONG; + + net_get_random_once(&jhash_rnd, sizeof(jhash_rnd)); + + mutex_lock(&xn->hash_lock); + est = __xt_rateest_lookup(xn, info->name); + if (est) { + mutex_unlock(&xn->hash_lock); + /* + * If estimator parameters are specified, they must match the + * existing estimator. + */ + if ((!info->interval && !info->ewma_log) || + (info->interval != est->params.interval || + info->ewma_log != est->params.ewma_log)) { + xt_rateest_put(par->net, est); + return -EINVAL; + } + info->est = est; + return 0; } - ret = -ENOENT; - est1 = xt_rateest_lookup(par->net, info->name1); - if (!est1) + ret = -ENOMEM; + est = kzalloc(sizeof(*est), GFP_KERNEL); + if (!est) goto err1; - est2 = NULL; - if (info->flags & XT_RATEEST_MATCH_REL) { - est2 = xt_rateest_lookup(par->net, info->name2); - if (!est2) - goto err2; - } - - info->est1 = est1; - info->est2 = est2; + gnet_stats_basic_sync_init(&est->bstats); + strscpy(est->name, info->name, sizeof(est->name)); + spin_lock_init(&est->lock); + est->refcnt = 1; + est->params.interval = info->interval; + est->params.ewma_log = info->ewma_log; + + cfg.opt.nla_len = nla_attr_size(sizeof(cfg.est)); + cfg.opt.nla_type = TCA_STATS_RATE_EST; + cfg.est.interval = info->interval; + cfg.est.ewma_log = info->ewma_log; + + ret = gen_new_estimator(&est->bstats, NULL, &est->rate_est, + &est->lock, NULL, &cfg.opt); + if (ret < 0) + goto err2; + + info->est = est; + xt_rateest_hash_insert(xn, est); + mutex_unlock(&xn->hash_lock); return 0; err2: - xt_rateest_put(par->net, est1); + kfree(est); err1: + mutex_unlock(&xn->hash_lock); return ret; } -static void xt_rateest_mt_destroy(const struct xt_mtdtor_param *par) +static void xt_rateest_tg_destroy(const struct xt_tgdtor_param *par) { - struct xt_rateest_match_info *info = par->matchinfo; + struct xt_rateest_target_info *info = par->targinfo; - xt_rateest_put(par->net, info->est1); - if (info->est2) - xt_rateest_put(par->net, info->est2); + xt_rateest_put(par->net, info->est); } -static struct xt_match xt_rateest_mt_reg __read_mostly = { - .name = "rateest", +static struct xt_target xt_rateest_tg_reg __read_mostly = { + .name = "RATEEST", .revision = 0, .family = NFPROTO_UNSPEC, - .match = xt_rateest_mt, - .checkentry = xt_rateest_mt_checkentry, - .destroy = xt_rateest_mt_destroy, - .matchsize = sizeof(struct xt_rateest_match_info), - .usersize = offsetof(struct xt_rateest_match_info, est1), + .target = xt_rateest_tg, + .checkentry = xt_rateest_tg_checkentry, + .destroy = xt_rateest_tg_destroy, + .targetsize = sizeof(struct xt_rateest_target_info), + .usersize = offsetof(struct xt_rateest_target_info, est), .me = THIS_MODULE, }; -static int __init xt_rateest_mt_init(void) +static __net_init int xt_rateest_net_init(struct net *net) { - return xt_register_match(&xt_rateest_mt_reg); + struct xt_rateest_net *xn = net_generic(net, xt_rateest_id); + int i; + + mutex_init(&xn->hash_lock); + for (i = 0; i < ARRAY_SIZE(xn->hash); i++) + INIT_HLIST_HEAD(&xn->hash[i]); + return 0; } -static void __exit xt_rateest_mt_fini(void) +static struct pernet_operations xt_rateest_net_ops = { + .init = xt_rateest_net_init, + .id = &xt_rateest_id, + .size = sizeof(struct xt_rateest_net), +}; + +static int __init xt_rateest_tg_init(void) { - xt_unregister_match(&xt_rateest_mt_reg); + int err = register_pernet_subsys(&xt_rateest_net_ops); + + if (err) + return err; + return xt_register_target(&xt_rateest_tg_reg); } +static void __exit xt_rateest_tg_fini(void) +{ + xt_unregister_target(&xt_rateest_tg_reg); + unregister_pernet_subsys(&xt_rateest_net_ops); +} + + MODULE_AUTHOR("Patrick McHardy "); MODULE_LICENSE("GPL"); -MODULE_DESCRIPTION("xtables rate estimator match"); -MODULE_ALIAS("ipt_rateest"); -MODULE_ALIAS("ip6t_rateest"); -module_init(xt_rateest_mt_init); -module_exit(xt_rateest_mt_fini); +MODULE_DESCRIPTION("Xtables: packet rate estimator"); +MODULE_ALIAS("ipt_RATEEST"); +MODULE_ALIAS("ip6t_RATEEST"); +module_init(xt_rateest_tg_init); +module_exit(xt_rateest_tg_fini); diff --git a/tools/memory-model/litmus-tests/Z6.0+pooncelock+pooncelock+pombonce.litmus b/tools/memory-model/litmus-tests/Z6.0+pooncelock+pooncelock+pombonce.litmus index 10a2aa04cd078..415248fb66990 100644 --- a/tools/memory-model/litmus-tests/Z6.0+pooncelock+pooncelock+pombonce.litmus +++ b/tools/memory-model/litmus-tests/Z6.0+pooncelock+pooncelock+pombonce.litmus @@ -1,11 +1,12 @@ -C Z6.0+pooncelock+pooncelock+pombonce +C Z6.0+pooncelock+poonceLock+pombonce (* - * Result: Sometimes + * Result: Never * - * This example demonstrates that a pair of accesses made by different - * processes each while holding a given lock will not necessarily be - * seen as ordered by a third process not holding that lock. + * This litmus test demonstrates how smp_mb__after_spinlock() may be + * used to ensure that accesses in different critical sections for a + * given lock running on different CPUs are nevertheless seen in order + * by CPUs not holding that lock. *) {} @@ -23,6 +24,7 @@ P1(int *y, int *z, spinlock_t *mylock) int r0; spin_lock(mylock); + smp_mb__after_spinlock(); r0 = READ_ONCE(*y); WRITE_ONCE(*z, 1); spin_unlock(mylock);