From 3d82d156586f1dc18360870c1a8f7e60ec219f1f Mon Sep 17 00:00:00 2001 From: almalinux-bot-kernel Date: Sat, 25 Jul 2026 05:08:19 +0000 Subject: [PATCH] Import of kernel-6.12.0-211.37.1.el10_2 --- ....34.1.el10 => COPYING-6.12.0-211.37.1.el10 | 0 Makefile.rhelver | 2 +- configs/kernel-6.12.0-x86_64-debug.config | 2 +- configs/kernel-6.12.0-x86_64-rt-debug.config | 2 +- configs/kernel-6.12.0-x86_64-rt.config | 2 +- configs/kernel-6.12.0-x86_64.config | 2 +- configs/kernel-6.12.0-x86_64_v2-debug.config | 2 +- .../kernel-6.12.0-x86_64_v2-rt-debug.config | 2 +- configs/kernel-6.12.0-x86_64_v2-rt.config | 2 +- configs/kernel-6.12.0-x86_64_v2.config | 2 +- crypto/af_alg.c | 5 +- crypto/algif_hash.c | 3 +- crypto/algif_rng.c | 3 +- drivers/cxl/core/port.c | 8 +- drivers/gpu/drm/drm_gem.c | 59 ++- drivers/gpu/drm/drm_ioctl.c | 3 +- drivers/gpu/drm/xe/xe_dma_buf.c | 37 +- drivers/gpu/drm/xe/xe_exec_queue.c | 7 +- .../net/ethernet/intel/ice/devlink/devlink.c | 4 +- drivers/net/ethernet/intel/ice/ice.h | 4 +- drivers/net/ethernet/intel/ice/ice_base.c | 30 +- drivers/net/ethernet/intel/ice/ice_common.c | 96 ++-- drivers/net/ethernet/intel/ice/ice_ethtool.c | 81 +-- drivers/net/ethernet/intel/ice/ice_idc.c | 44 +- drivers/net/ethernet/intel/ice/ice_lib.c | 66 ++- drivers/net/ethernet/intel/ice/ice_lib.h | 6 + drivers/net/ethernet/intel/ice/ice_main.c | 204 ++++--- drivers/net/ethernet/intel/ice/ice_ptp.c | 35 +- .../net/ethernet/intel/ice/ice_ptp_consts.h | 12 +- drivers/net/ethernet/intel/ice/ice_ptp_hw.c | 6 +- drivers/net/ethernet/intel/ice/ice_ptp_hw.h | 2 +- drivers/net/ethernet/intel/ice/ice_repr.c | 5 +- drivers/net/ethernet/intel/ice/ice_sf_eth.c | 2 + drivers/net/ethernet/intel/ice/ice_switch.c | 4 +- drivers/net/ethernet/intel/ice/ice_txrx.c | 56 +- drivers/net/ethernet/intel/ice/ice_txrx.h | 203 ++++--- drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 5 +- drivers/net/ethernet/intel/ice/ice_txrx_lib.h | 2 +- drivers/net/ethernet/intel/ice/ice_vf_lib.c | 4 +- drivers/net/ethernet/intel/ice/ice_xsk.c | 7 +- fs/nfsd/nfs4proc.c | 124 ++++- fs/nfsd/nfs4state.c | 27 +- fs/nfsd/nfsctl.c | 10 +- fs/nfsd/state.h | 9 +- fs/nfsd/xdr4.h | 1 + fs/notify/fsnotify.c | 2 +- fs/notify/mark.c | 18 +- include/asm-generic/syscall.h | 2 +- include/linux/bitmap.h | 73 ++- include/linux/cpumask.h | 16 + include/linux/fsnotify_backend.h | 1 + include/linux/types.h | 2 +- kernel.sbat | 2 +- lib/bitmap.c | 15 + lib/flex_proportions.c | 5 +- lib/test_bitmap.c | 163 ++++-- net/bluetooth/l2cap_core.c | 6 + net/can/bcm.c | 37 +- net/xfrm/xfrm_state.c | 12 +- redhat/Makefile.automotive | 2 +- .../configs/common/generic/CONFIG_PT_RECLAIM | 2 +- .../arm/aarch64/CONFIG_ARM64_ERRATUM_4118414 | 1 + .../x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV | 1 + .../x86/CONFIG_SOFT_WATCHDOG_PRETIMEOUT | 1 + .../x86/CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT | 1 + ...ONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP | 1 + ...NFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC | 1 + .../x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV | 1 + .../x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP | 1 + .../x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC | 1 + redhat/kernel.changelog-10.2 | 501 ++++++++++++++++++ redhat/scripts/gating/gating.yaml | 8 - redhat/scripts/generate-rebuild-changelog.sh | 123 ++++- redhat/scripts/genspec/genlog.py | 2 +- redhat/self-test/data/centos-2585cf9dfaad.el7 | 10 +- .../data/centos-2585cf9dfaad.el7.spec | 1 + .../self-test/data/centos-2585cf9dfaad.fc25 | 10 +- .../data/centos-2585cf9dfaad.fc25.spec | 1 + redhat/self-test/data/centos-78e36f3b0dae.el7 | 10 +- .../data/centos-78e36f3b0dae.el7.spec | 1 + .../self-test/data/centos-78e36f3b0dae.fc25 | 10 +- .../data/centos-78e36f3b0dae.fc25.spec | 1 + redhat/self-test/data/centos-df0cc57e057f.el7 | 10 +- .../data/centos-df0cc57e057f.el7.spec | 1 + .../self-test/data/centos-df0cc57e057f.fc25 | 10 +- .../data/centos-df0cc57e057f.fc25.spec | 1 + redhat/self-test/data/centos-fce15c45d3fb.el7 | 10 +- .../data/centos-fce15c45d3fb.el7.spec | 1 + .../self-test/data/centos-fce15c45d3fb.fc25 | 10 +- .../data/centos-fce15c45d3fb.fc25.spec | 1 + redhat/self-test/data/fedora-2585cf9dfaad.el7 | 10 +- .../data/fedora-2585cf9dfaad.el7.spec | 1 + .../self-test/data/fedora-2585cf9dfaad.fc25 | 10 +- .../data/fedora-2585cf9dfaad.fc25.spec | 1 + redhat/self-test/data/fedora-78e36f3b0dae.el7 | 10 +- .../data/fedora-78e36f3b0dae.el7.spec | 1 + .../self-test/data/fedora-78e36f3b0dae.fc25 | 10 +- .../data/fedora-78e36f3b0dae.fc25.spec | 1 + redhat/self-test/data/fedora-df0cc57e057f.el7 | 10 +- .../data/fedora-df0cc57e057f.el7.spec | 1 + .../self-test/data/fedora-df0cc57e057f.fc25 | 10 +- .../data/fedora-df0cc57e057f.fc25.spec | 1 + redhat/self-test/data/fedora-fce15c45d3fb.el7 | 10 +- .../data/fedora-fce15c45d3fb.el7.spec | 1 + .../self-test/data/fedora-fce15c45d3fb.fc25 | 10 +- .../data/fedora-fce15c45d3fb.fc25.spec | 1 + redhat/self-test/data/rhel-2585cf9dfaad.el7 | 10 +- .../self-test/data/rhel-2585cf9dfaad.el7.spec | 1 + redhat/self-test/data/rhel-2585cf9dfaad.fc25 | 10 +- .../data/rhel-2585cf9dfaad.fc25.spec | 1 + redhat/self-test/data/rhel-78e36f3b0dae.el7 | 10 +- .../self-test/data/rhel-78e36f3b0dae.el7.spec | 1 + redhat/self-test/data/rhel-78e36f3b0dae.fc25 | 10 +- .../data/rhel-78e36f3b0dae.fc25.spec | 1 + redhat/self-test/data/rhel-df0cc57e057f.el7 | 10 +- .../self-test/data/rhel-df0cc57e057f.el7.spec | 1 + redhat/self-test/data/rhel-df0cc57e057f.fc25 | 10 +- .../data/rhel-df0cc57e057f.fc25.spec | 1 + redhat/self-test/data/rhel-fce15c45d3fb.el7 | 10 +- .../self-test/data/rhel-fce15c45d3fb.el7.spec | 1 + redhat/self-test/data/rhel-fce15c45d3fb.fc25 | 10 +- .../data/rhel-fce15c45d3fb.fc25.spec | 1 + security/keys/trusted-keys/trusted_tpm2.c | 6 +- tools/lib/perf/Makefile | 2 +- uki-addons.sbat | 2 +- uki.sbat | 2 +- 126 files changed, 1785 insertions(+), 684 deletions(-) rename COPYING-6.12.0-211.34.1.el10 => COPYING-6.12.0-211.37.1.el10 (100%) create mode 100644 redhat/configs/common/generic/arm/aarch64/CONFIG_ARM64_ERRATUM_4118414 create mode 100644 redhat/configs/rhel/automotive/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV create mode 100644 redhat/configs/rhel/generic/x86/CONFIG_SOFT_WATCHDOG_PRETIMEOUT create mode 100644 redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT create mode 100644 redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP create mode 100644 redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC create mode 100644 redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV create mode 100644 redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP create mode 100644 redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC diff --git a/COPYING-6.12.0-211.34.1.el10 b/COPYING-6.12.0-211.37.1.el10 similarity index 100% rename from COPYING-6.12.0-211.34.1.el10 rename to COPYING-6.12.0-211.37.1.el10 diff --git a/Makefile.rhelver b/Makefile.rhelver index 3b68c7355a..8193ded8dc 100644 --- a/Makefile.rhelver +++ b/Makefile.rhelver @@ -12,7 +12,7 @@ RHEL_MINOR = 2 # # Use this spot to avoid future merge conflicts. # Do not trim this comment. -RHEL_RELEASE = 211.7.1 +RHEL_RELEASE = 211.37.1 # # RHEL_REBASE_NUM diff --git a/configs/kernel-6.12.0-x86_64-debug.config b/configs/kernel-6.12.0-x86_64-debug.config index c92c81527d..d32de0bd21 100644 --- a/configs/kernel-6.12.0-x86_64-debug.config +++ b/configs/kernel-6.12.0-x86_64-debug.config @@ -1289,7 +1289,7 @@ CONFIG_NUMA_MEMBLKS=y CONFIG_NUMA_EMU=y CONFIG_ARCH_HAS_USER_SHADOW_STACK=y CONFIG_ARCH_SUPPORTS_PT_RECLAIM=y -CONFIG_PT_RECLAIM=y +# CONFIG_PT_RECLAIM is not set # # Data Access Monitoring diff --git a/configs/kernel-6.12.0-x86_64-rt-debug.config b/configs/kernel-6.12.0-x86_64-rt-debug.config index e4832c4aa9..b4c03549d9 100644 --- a/configs/kernel-6.12.0-x86_64-rt-debug.config +++ b/configs/kernel-6.12.0-x86_64-rt-debug.config @@ -1275,7 +1275,7 @@ CONFIG_NUMA_MEMBLKS=y CONFIG_NUMA_EMU=y CONFIG_ARCH_HAS_USER_SHADOW_STACK=y CONFIG_ARCH_SUPPORTS_PT_RECLAIM=y -CONFIG_PT_RECLAIM=y +# CONFIG_PT_RECLAIM is not set # # Data Access Monitoring diff --git a/configs/kernel-6.12.0-x86_64-rt.config b/configs/kernel-6.12.0-x86_64-rt.config index 9c9f931302..9d6748f64c 100644 --- a/configs/kernel-6.12.0-x86_64-rt.config +++ b/configs/kernel-6.12.0-x86_64-rt.config @@ -1271,7 +1271,7 @@ CONFIG_NUMA_MEMBLKS=y CONFIG_NUMA_EMU=y CONFIG_ARCH_HAS_USER_SHADOW_STACK=y CONFIG_ARCH_SUPPORTS_PT_RECLAIM=y -CONFIG_PT_RECLAIM=y +# CONFIG_PT_RECLAIM is not set # # Data Access Monitoring diff --git a/configs/kernel-6.12.0-x86_64.config b/configs/kernel-6.12.0-x86_64.config index 98004af035..400d8e8c7f 100644 --- a/configs/kernel-6.12.0-x86_64.config +++ b/configs/kernel-6.12.0-x86_64.config @@ -1285,7 +1285,7 @@ CONFIG_NUMA_MEMBLKS=y CONFIG_NUMA_EMU=y CONFIG_ARCH_HAS_USER_SHADOW_STACK=y CONFIG_ARCH_SUPPORTS_PT_RECLAIM=y -CONFIG_PT_RECLAIM=y +# CONFIG_PT_RECLAIM is not set # # Data Access Monitoring diff --git a/configs/kernel-6.12.0-x86_64_v2-debug.config b/configs/kernel-6.12.0-x86_64_v2-debug.config index c92c81527d..d32de0bd21 100644 --- a/configs/kernel-6.12.0-x86_64_v2-debug.config +++ b/configs/kernel-6.12.0-x86_64_v2-debug.config @@ -1289,7 +1289,7 @@ CONFIG_NUMA_MEMBLKS=y CONFIG_NUMA_EMU=y CONFIG_ARCH_HAS_USER_SHADOW_STACK=y CONFIG_ARCH_SUPPORTS_PT_RECLAIM=y -CONFIG_PT_RECLAIM=y +# CONFIG_PT_RECLAIM is not set # # Data Access Monitoring diff --git a/configs/kernel-6.12.0-x86_64_v2-rt-debug.config b/configs/kernel-6.12.0-x86_64_v2-rt-debug.config index e4832c4aa9..b4c03549d9 100644 --- a/configs/kernel-6.12.0-x86_64_v2-rt-debug.config +++ b/configs/kernel-6.12.0-x86_64_v2-rt-debug.config @@ -1275,7 +1275,7 @@ CONFIG_NUMA_MEMBLKS=y CONFIG_NUMA_EMU=y CONFIG_ARCH_HAS_USER_SHADOW_STACK=y CONFIG_ARCH_SUPPORTS_PT_RECLAIM=y -CONFIG_PT_RECLAIM=y +# CONFIG_PT_RECLAIM is not set # # Data Access Monitoring diff --git a/configs/kernel-6.12.0-x86_64_v2-rt.config b/configs/kernel-6.12.0-x86_64_v2-rt.config index 9c9f931302..9d6748f64c 100644 --- a/configs/kernel-6.12.0-x86_64_v2-rt.config +++ b/configs/kernel-6.12.0-x86_64_v2-rt.config @@ -1271,7 +1271,7 @@ CONFIG_NUMA_MEMBLKS=y CONFIG_NUMA_EMU=y CONFIG_ARCH_HAS_USER_SHADOW_STACK=y CONFIG_ARCH_SUPPORTS_PT_RECLAIM=y -CONFIG_PT_RECLAIM=y +# CONFIG_PT_RECLAIM is not set # # Data Access Monitoring diff --git a/configs/kernel-6.12.0-x86_64_v2.config b/configs/kernel-6.12.0-x86_64_v2.config index 98004af035..400d8e8c7f 100644 --- a/configs/kernel-6.12.0-x86_64_v2.config +++ b/configs/kernel-6.12.0-x86_64_v2.config @@ -1285,7 +1285,7 @@ CONFIG_NUMA_MEMBLKS=y CONFIG_NUMA_EMU=y CONFIG_ARCH_HAS_USER_SHADOW_STACK=y CONFIG_ARCH_SUPPORTS_PT_RECLAIM=y -CONFIG_PT_RECLAIM=y +# CONFIG_PT_RECLAIM is not set # # Data Access Monitoring diff --git a/crypto/af_alg.c b/crypto/af_alg.c index 4c94448e46..921a42683e 100644 --- a/crypto/af_alg.c +++ b/crypto/af_alg.c @@ -1177,15 +1177,14 @@ struct af_alg_async_req *af_alg_alloc_areq(struct sock *sk, if (unlikely(!areq)) return ERR_PTR(-ENOMEM); + memset(areq, 0, areqlen); + ctx->inflight = true; areq->areqlen = areqlen; areq->sk = sk; areq->first_rsgl.sgl.sgt.sgl = areq->first_rsgl.sgl.sgl; - areq->last_rsgl = NULL; INIT_LIST_HEAD(&areq->rsgl_list); - areq->tsgl = NULL; - areq->tsgl_entries = 0; return areq; } diff --git a/crypto/algif_hash.c b/crypto/algif_hash.c index e3f1a48527..4d3dfc60a1 100644 --- a/crypto/algif_hash.c +++ b/crypto/algif_hash.c @@ -416,9 +416,8 @@ static int hash_accept_parent_nokey(void *private, struct sock *sk) if (!ctx) return -ENOMEM; - ctx->result = NULL; + memset(ctx, 0, len); ctx->len = len; - ctx->more = false; crypto_init_wait(&ctx->wait); ask->private = ctx; diff --git a/crypto/algif_rng.c b/crypto/algif_rng.c index 10c41adac3..1a86e40c83 100644 --- a/crypto/algif_rng.c +++ b/crypto/algif_rng.c @@ -248,9 +248,8 @@ static int rng_accept_parent(void *private, struct sock *sk) if (!ctx) return -ENOMEM; + memset(ctx, 0, len); ctx->len = len; - ctx->addtl = NULL; - ctx->addtl_len = 0; /* * No seeding done at that point -- if multiple accepts are diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c index f7477e68a7..3c11e4295a 100644 --- a/drivers/cxl/core/port.c +++ b/drivers/cxl/core/port.c @@ -549,10 +549,13 @@ static void cxl_port_release(struct device *dev) xa_destroy(&port->dports); xa_destroy(&port->regions); ida_free(&cxl_port_ida, port->id); - if (is_cxl_root(port)) + + if (is_cxl_root(port)) { kfree(to_cxl_root(port)); - else + } else { + put_device(dev->parent); kfree(port); + } } static ssize_t decoders_committed_show(struct device *dev, @@ -718,6 +721,7 @@ static struct cxl_port *cxl_port_alloc(struct device *uport_dev, struct cxl_port *iter; dev->parent = &parent_port->dev; + get_device(dev->parent); port->depth = parent_port->depth + 1; port->parent_dport = parent_dport; diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 3b9df655e8..5c4a113b08 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -965,40 +965,63 @@ err: return ret; } +/* + * This ioctl is disabled for security reasons but also it failed + * to follow process in terms of adding testing in igt and verifying + * all the corner cases which made fixing security bugs in it even + * harder than necessary. + * + * To re-enable this ioctl + * 1. land working IGT tests in igt-gpu-tools that cover + * all corner cases and race conditions. + * 2. handle idr_preload + * 3. handle == 0 + * 4. handle == new_handle semantics definition. + */ int drm_gem_change_handle_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { struct drm_gem_change_handle *args = data; struct drm_gem_object *obj; - int ret; + int new_handle, ret; if (!drm_core_check_feature(dev, DRIVER_GEM)) return -EOPNOTSUPP; - obj = drm_gem_object_lookup(file_priv, args->handle); - if (!obj) - return -ENOENT; + /* idr_alloc() limitation. */ + if (args->new_handle > INT_MAX) + return -EINVAL; + new_handle = args->new_handle; - if (args->handle == args->new_handle) { - ret = 0; - goto out; - } + if (args->handle == new_handle) + return 0; mutex_lock(&file_priv->prime.lock); - spin_lock(&file_priv->table_lock); - ret = idr_alloc(&file_priv->object_idr, obj, - args->new_handle, args->new_handle + 1, GFP_NOWAIT); + ret = idr_alloc(&file_priv->object_idr, NULL, new_handle, new_handle + 1, + GFP_NOWAIT); + + if (ret < 0) { + spin_unlock(&file_priv->table_lock); + goto out_unlock; + } + + obj = idr_replace(&file_priv->object_idr, NULL, args->handle); + if (IS_ERR_OR_NULL(obj)) { + idr_remove(&file_priv->object_idr, new_handle); + spin_unlock(&file_priv->table_lock); + ret = -ENOENT; + goto out_unlock; + } spin_unlock(&file_priv->table_lock); - if (ret < 0) - goto out_unlock; - if (obj->dma_buf) { - ret = drm_prime_add_buf_handle(&file_priv->prime, obj->dma_buf, args->new_handle); + ret = drm_prime_add_buf_handle(&file_priv->prime, obj->dma_buf, + new_handle); if (ret < 0) { spin_lock(&file_priv->table_lock); - idr_remove(&file_priv->object_idr, args->new_handle); + idr_remove(&file_priv->object_idr, new_handle); + idr_replace(&file_priv->object_idr, obj, args->handle); spin_unlock(&file_priv->table_lock); goto out_unlock; } @@ -1010,12 +1033,12 @@ int drm_gem_change_handle_ioctl(struct drm_device *dev, void *data, spin_lock(&file_priv->table_lock); idr_remove(&file_priv->object_idr, args->handle); + obj = idr_replace(&file_priv->object_idr, obj, new_handle); spin_unlock(&file_priv->table_lock); + WARN_ON(obj != NULL); out_unlock: mutex_unlock(&file_priv->prime.lock); -out: - drm_gem_object_put(obj); return ret; } diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index d8a24875a7..e81ec3eb51 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -653,7 +653,8 @@ static const struct drm_ioctl_desc drm_ioctls[] = { DRM_IOCTL_DEF(DRM_IOCTL_GEM_CLOSE, drm_gem_close_ioctl, DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_GEM_FLINK, drm_gem_flink_ioctl, DRM_AUTH), DRM_IOCTL_DEF(DRM_IOCTL_GEM_OPEN, drm_gem_open_ioctl, DRM_AUTH), - DRM_IOCTL_DEF(DRM_IOCTL_GEM_CHANGE_HANDLE, drm_gem_change_handle_ioctl, DRM_RENDER_ALLOW), + /* see drm_gem.c:drm_gem_change_handle_ioctl for why this is invalid */ + DRM_IOCTL_DEF(DRM_IOCTL_GEM_CHANGE_HANDLE, drm_invalid_op, DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETRESOURCES, drm_mode_getresources, 0), diff --git a/drivers/gpu/drm/xe/xe_dma_buf.c b/drivers/gpu/drm/xe/xe_dma_buf.c index 2650c5abb3..eeea2a6e15 100644 --- a/drivers/gpu/drm/xe/xe_dma_buf.c +++ b/drivers/gpu/drm/xe/xe_dma_buf.c @@ -228,8 +228,7 @@ struct dma_buf *xe_gem_prime_export(struct drm_gem_object *obj, int flags) } static struct drm_gem_object * -xe_dma_buf_init_obj(struct drm_device *dev, struct xe_bo *storage, - struct dma_buf *dma_buf) +xe_dma_buf_create_obj(struct drm_device *dev, struct dma_buf *dma_buf) { struct dma_resv *resv = dma_buf->resv; struct xe_device *xe = to_xe_device(dev); @@ -250,7 +249,7 @@ xe_dma_buf_init_obj(struct drm_device *dev, struct xe_bo *storage, if (ret) break; - bo = xe_bo_init_locked(xe, storage, NULL, resv, NULL, dma_buf->size, + bo = xe_bo_init_locked(xe, NULL, NULL, resv, NULL, dma_buf->size, 0, /* Will require 1way or 2way for vm_bind */ ttm_bo_type_sg, XE_BO_FLAG_SYSTEM, &exec); drm_exec_retry_on_contention(&exec); @@ -301,7 +300,6 @@ struct drm_gem_object *xe_gem_prime_import(struct drm_device *dev, const struct dma_buf_attach_ops *attach_ops; struct dma_buf_attachment *attach; struct drm_gem_object *obj; - struct xe_bo *bo; if (dma_buf->ops == &xe_dmabuf_ops) { obj = dma_buf->priv; @@ -317,13 +315,15 @@ struct drm_gem_object *xe_gem_prime_import(struct drm_device *dev, } /* - * Don't publish the bo until we have a valid attachment, and a - * valid attachment needs the bo address. So pre-create a bo before - * creating the attachment and publish. + * This needs to happen before the attach, since it will create a new + * attachment for this, and add it to the list of attachments, at which + * point it is globally visible, and at any point the export side can + * call into on invalidate_mappings callback, which require a working + * object. */ - bo = xe_bo_alloc(); - if (IS_ERR(bo)) - return ERR_CAST(bo); + obj = xe_dma_buf_create_obj(dev, dma_buf); + if (IS_ERR(obj)) + return obj; attach_ops = &xe_dma_buf_attach_ops; #if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) @@ -331,26 +331,15 @@ struct drm_gem_object *xe_gem_prime_import(struct drm_device *dev, attach_ops = test->attach_ops; #endif - attach = dma_buf_dynamic_attach(dma_buf, dev->dev, attach_ops, &bo->ttm.base); + attach = dma_buf_dynamic_attach(dma_buf, dev->dev, attach_ops, obj); if (IS_ERR(attach)) { - obj = ERR_CAST(attach); - goto out_err; + xe_bo_put(gem_to_xe_bo(obj)); + return ERR_CAST(attach); } - /* Errors here will take care of freeing the bo. */ - obj = xe_dma_buf_init_obj(dev, bo, dma_buf); - if (IS_ERR(obj)) - return obj; - - get_dma_buf(dma_buf); obj->import_attach = attach; return obj; - -out_err: - xe_bo_free(bo); - - return obj; } #if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c index cb5f204c08..ed5a204432 100644 --- a/drivers/gpu/drm/xe/xe_exec_queue.c +++ b/drivers/gpu/drm/xe/xe_exec_queue.c @@ -759,7 +759,7 @@ int xe_exec_queue_create_ioctl(struct drm_device *dev, void *data, if (q->vm && q->hwe->hw_engine_group) { err = xe_hw_engine_group_add_exec_queue(q->hwe->hw_engine_group, q); if (err) - goto put_exec_queue; + goto kill_exec_queue; } } @@ -768,12 +768,15 @@ int xe_exec_queue_create_ioctl(struct drm_device *dev, void *data, /* user id alloc must always be last in ioctl to prevent UAF */ err = xa_alloc(&xef->exec_queue.xa, &id, q, xa_limit_32b, GFP_KERNEL); if (err) - goto kill_exec_queue; + goto del_hw_engine_group; args->exec_queue_id = id; return 0; +del_hw_engine_group: + if (q->vm && q->hwe && q->hwe->hw_engine_group) + xe_hw_engine_group_del_exec_queue(q->hwe->hw_engine_group, q); kill_exec_queue: xe_exec_queue_kill(q); put_exec_queue: diff --git a/drivers/net/ethernet/intel/ice/devlink/devlink.c b/drivers/net/ethernet/intel/ice/devlink/devlink.c index ac071c5b4c..862ff1cdd4 100644 --- a/drivers/net/ethernet/intel/ice/devlink/devlink.c +++ b/drivers/net/ethernet/intel/ice/devlink/devlink.c @@ -1357,7 +1357,7 @@ ice_devlink_enable_roce_get(struct devlink *devlink, u32 id, cdev = pf->cdev_info; if (!cdev) - return -ENODEV; + return -EOPNOTSUPP; ctx->val.vbool = !!(cdev->rdma_protocol & IIDC_RDMA_PROTOCOL_ROCEV2); @@ -1423,7 +1423,7 @@ ice_devlink_enable_iw_get(struct devlink *devlink, u32 id, cdev = pf->cdev_info; if (!cdev) - return -ENODEV; + return -EOPNOTSUPP; ctx->val.vbool = !!(cdev->rdma_protocol & IIDC_RDMA_PROTOCOL_IWARP); diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h index ae1ebf507f..eb3a48330c 100644 --- a/drivers/net/ethernet/intel/ice/ice.h +++ b/drivers/net/ethernet/intel/ice/ice.h @@ -979,9 +979,6 @@ u16 ice_get_avail_rxq_count(struct ice_pf *pf); int ice_vsi_recfg_qs(struct ice_vsi *vsi, int new_rx, int new_tx, bool locked); void ice_update_vsi_stats(struct ice_vsi *vsi); void ice_update_pf_stats(struct ice_pf *pf); -void -ice_fetch_u64_stats_per_ring(struct u64_stats_sync *syncp, - struct ice_q_stats stats, u64 *pkts, u64 *bytes); int ice_up(struct ice_vsi *vsi); int ice_down(struct ice_vsi *vsi); int ice_down_up(struct ice_vsi *vsi); @@ -1012,6 +1009,7 @@ int ice_schedule_reset(struct ice_pf *pf, enum ice_reset_req reset); void ice_print_link_msg(struct ice_vsi *vsi, bool isup); int ice_plug_aux_dev(struct ice_pf *pf); void ice_unplug_aux_dev(struct ice_pf *pf); +void ice_rdma_finalize_setup(struct ice_pf *pf); int ice_init_rdma(struct ice_pf *pf); void ice_deinit_rdma(struct ice_pf *pf); bool ice_is_wol_supported(struct ice_hw *hw); diff --git a/drivers/net/ethernet/intel/ice/ice_base.c b/drivers/net/ethernet/intel/ice/ice_base.c index f0da50df67..350a313c3a 100644 --- a/drivers/net/ethernet/intel/ice/ice_base.c +++ b/drivers/net/ethernet/intel/ice/ice_base.c @@ -666,23 +666,12 @@ static int ice_vsi_cfg_rxq(struct ice_rx_ring *ring) if (ring->vsi->type == ICE_VSI_PF || ring->vsi->type == ICE_VSI_SF || ring->vsi->type == ICE_VSI_LB) { - if (!xdp_rxq_info_is_reg(&ring->xdp_rxq)) { - err = __xdp_rxq_info_reg(&ring->xdp_rxq, ring->netdev, - ring->q_index, - ring->q_vector->napi.napi_id, - ring->rx_buf_len); - if (err) - return err; - } - ice_rx_xsk_pool(ring); err = ice_realloc_rx_xdp_bufs(ring, ring->xsk_pool); if (err) return err; if (ring->xsk_pool) { - xdp_rxq_info_unreg(&ring->xdp_rxq); - rx_buf_len = xsk_pool_get_rx_frame_size(ring->xsk_pool); err = __xdp_rxq_info_reg(&ring->xdp_rxq, ring->netdev, @@ -705,14 +694,13 @@ static int ice_vsi_cfg_rxq(struct ice_rx_ring *ring) if (err) return err; - if (!xdp_rxq_info_is_reg(&ring->xdp_rxq)) { - err = __xdp_rxq_info_reg(&ring->xdp_rxq, ring->netdev, - ring->q_index, - ring->q_vector->napi.napi_id, - ring->rx_buf_len); - if (err) - goto err_destroy_fq; - } + err = __xdp_rxq_info_reg(&ring->xdp_rxq, ring->netdev, + ring->q_index, + ring->q_vector->napi.napi_id, + ring->rx_buf_len); + if (err) + goto err_destroy_fq; + xdp_rxq_info_attach_page_pool(&ring->xdp_rxq, ring->pp); } @@ -1417,8 +1405,8 @@ static void ice_qp_reset_stats(struct ice_vsi *vsi, u16 q_idx) if (!vsi_stat) return; - memset(&vsi_stat->rx_ring_stats[q_idx]->rx_stats, 0, - sizeof(vsi_stat->rx_ring_stats[q_idx]->rx_stats)); + memset(&vsi_stat->rx_ring_stats[q_idx]->stats, 0, + sizeof(vsi_stat->rx_ring_stats[q_idx]->stats)); memset(&vsi_stat->tx_ring_stats[q_idx]->stats, 0, sizeof(vsi_stat->tx_ring_stats[q_idx]->stats)); if (vsi->xdp_rings) diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c index 785bf5cc1b..8866902efb 100644 --- a/drivers/net/ethernet/intel/ice/ice_common.c +++ b/drivers/net/ethernet/intel/ice/ice_common.c @@ -203,42 +203,6 @@ bool ice_is_generic_mac(struct ice_hw *hw) hw->mac_type == ICE_MAC_GENERIC_3K_E825); } -/** - * ice_is_pf_c827 - check if pf contains c827 phy - * @hw: pointer to the hw struct - * - * Return: true if the device has c827 phy. - */ -static bool ice_is_pf_c827(struct ice_hw *hw) -{ - struct ice_aqc_get_link_topo cmd = {}; - u8 node_part_number; - u16 node_handle; - int status; - - if (hw->mac_type != ICE_MAC_E810) - return false; - - if (hw->device_id != ICE_DEV_ID_E810C_QSFP) - return true; - - cmd.addr.topo_params.node_type_ctx = - FIELD_PREP(ICE_AQC_LINK_TOPO_NODE_TYPE_M, ICE_AQC_LINK_TOPO_NODE_TYPE_PHY) | - FIELD_PREP(ICE_AQC_LINK_TOPO_NODE_CTX_M, ICE_AQC_LINK_TOPO_NODE_CTX_PORT); - cmd.addr.topo_params.index = 0; - - status = ice_aq_get_netlist_node(hw, &cmd, &node_part_number, - &node_handle); - - if (status || node_part_number != ICE_AQC_GET_LINK_TOPO_NODE_NR_C827) - return false; - - if (node_handle == E810C_QSFP_C827_0_HANDLE || node_handle == E810C_QSFP_C827_1_HANDLE) - return true; - - return false; -} - /** * ice_clear_pf_cfg - Clear PF configuration * @hw: pointer to the hardware structure @@ -958,30 +922,31 @@ static void ice_get_itr_intrl_gran(struct ice_hw *hw) } /** - * ice_wait_for_fw - wait for full FW readiness + * ice_wait_fw_load - wait for PHY firmware loading to complete * @hw: pointer to the hardware structure - * @timeout: milliseconds that can elapse before timing out + * @timeout: milliseconds that can elapse before timing out, 0 to bypass waiting * - * Return: 0 on success, -ETIMEDOUT on timeout. + * Return: + * * 0 on success + * * negative on timeout */ -static int ice_wait_for_fw(struct ice_hw *hw, u32 timeout) +static int ice_wait_fw_load(struct ice_hw *hw, u32 timeout) { - int fw_loading; - u32 elapsed = 0; + int fw_loading_reg; - while (elapsed <= timeout) { - fw_loading = rd32(hw, GL_MNG_FWSM) & GL_MNG_FWSM_FW_LOADING_M; - - /* firmware was not yet loaded, we have to wait more */ - if (fw_loading) { - elapsed += 100; - msleep(100); - continue; - } + if (!timeout) return 0; - } - return -ETIMEDOUT; + fw_loading_reg = rd32(hw, GL_MNG_FWSM) & GL_MNG_FWSM_FW_LOADING_M; + /* notify the user only once if PHY FW is still loading */ + if (fw_loading_reg) + dev_info(ice_hw_to_dev(hw), "Link initialization is blocked by PHY FW initialization. Link initialization will continue after PHY FW initialization completes.\n"); + else + return 0; + + return rd32_poll_timeout(hw, GL_MNG_FWSM, fw_loading_reg, + !(fw_loading_reg & GL_MNG_FWSM_FW_LOADING_M), + 10000, timeout * 1000); } static int __fwlog_send_cmd(void *priv, struct libie_aq_desc *desc, void *buf, @@ -1171,12 +1136,10 @@ int ice_init_hw(struct ice_hw *hw) * due to necessity of loading FW from an external source. * This can take even half a minute. */ - if (ice_is_pf_c827(hw)) { - status = ice_wait_for_fw(hw, 30000); - if (status) { - dev_err(ice_hw_to_dev(hw), "ice_wait_for_fw timed out"); - goto err_unroll_fltr_mgmt_struct; - } + status = ice_wait_fw_load(hw, 30000); + if (status) { + dev_err(ice_hw_to_dev(hw), "ice_wait_fw_load timed out"); + goto err_unroll_fltr_mgmt_struct; } hw->lane_num = ice_get_phy_lane_number(hw); @@ -1854,6 +1817,7 @@ static bool ice_should_retry_sq_send_cmd(u16 opcode) case ice_aqc_opc_lldp_stop: case ice_aqc_opc_lldp_start: case ice_aqc_opc_lldp_filter_ctrl: + case ice_aqc_opc_sff_eeprom: return true; } @@ -1879,6 +1843,7 @@ ice_sq_send_cmd_retry(struct ice_hw *hw, struct ice_ctl_q_info *cq, { struct libie_aq_desc desc_cpy; bool is_cmd_for_retry; + u8 *buf_cpy = NULL; u8 idx = 0; u16 opcode; int status; @@ -1888,8 +1853,11 @@ ice_sq_send_cmd_retry(struct ice_hw *hw, struct ice_ctl_q_info *cq, memset(&desc_cpy, 0, sizeof(desc_cpy)); if (is_cmd_for_retry) { - /* All retryable cmds are direct, without buf. */ - WARN_ON(buf); + if (buf) { + buf_cpy = kmemdup(buf, buf_size, GFP_KERNEL); + if (!buf_cpy) + return -ENOMEM; + } memcpy(&desc_cpy, desc, sizeof(desc_cpy)); } @@ -1901,12 +1869,14 @@ ice_sq_send_cmd_retry(struct ice_hw *hw, struct ice_ctl_q_info *cq, hw->adminq.sq_last_status != LIBIE_AQ_RC_EBUSY) break; + if (buf_cpy) + memcpy(buf, buf_cpy, buf_size); memcpy(desc, &desc_cpy, sizeof(desc_cpy)); - msleep(ICE_SQ_SEND_DELAY_TIME_MS); } while (++idx < ICE_SQ_SEND_MAX_EXECUTE); + kfree(buf_cpy); return status; } @@ -6429,7 +6399,7 @@ int ice_lldp_fltr_add_remove(struct ice_hw *hw, struct ice_vsi *vsi, bool add) struct ice_aqc_lldp_filter_ctrl *cmd; struct libie_aq_desc desc; - if (vsi->type != ICE_VSI_PF || !ice_fw_supports_lldp_fltr_ctrl(hw)) + if (!ice_fw_supports_lldp_fltr_ctrl(hw)) return -EOPNOTSUPP; cmd = libie_aq_raw(&desc); diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c index 33c8182265..928b5855ac 100644 --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c @@ -33,8 +33,8 @@ static int ice_q_stats_len(struct net_device *netdev) { struct ice_netdev_priv *np = netdev_priv(netdev); - return ((np->vsi->alloc_txq + np->vsi->alloc_rxq) * - (sizeof(struct ice_q_stats) / sizeof(u64))); + /* One packets and one bytes count per queue */ + return ((np->vsi->alloc_txq + np->vsi->alloc_rxq) * 2); } #define ICE_PF_STATS_LEN ARRAY_SIZE(ice_gstrings_pf_stats) @@ -1930,6 +1930,17 @@ __ice_get_ethtool_stats(struct net_device *netdev, int i = 0; char *p; + if (ice_is_port_repr_netdev(netdev)) { + ice_update_eth_stats(vsi); + + for (j = 0; j < ICE_VSI_STATS_LEN; j++) { + p = (char *)vsi + ice_gstrings_vsi_stats[j].stat_offset; + data[i++] = (ice_gstrings_vsi_stats[j].sizeof_stat == + sizeof(u64)) ? *(u64 *)p : *(u32 *)p; + } + return; + } + ice_update_pf_stats(pf); ice_update_vsi_stats(vsi); @@ -1939,32 +1950,39 @@ __ice_get_ethtool_stats(struct net_device *netdev, sizeof(u64)) ? *(u64 *)p : *(u32 *)p; } - if (ice_is_port_repr_netdev(netdev)) - return; - /* populate per queue stats */ rcu_read_lock(); ice_for_each_alloc_txq(vsi, j) { + u64 pkts, bytes; + tx_ring = READ_ONCE(vsi->tx_rings[j]); - if (tx_ring && tx_ring->ring_stats) { - data[i++] = tx_ring->ring_stats->stats.pkts; - data[i++] = tx_ring->ring_stats->stats.bytes; - } else { + if (!tx_ring || !tx_ring->ring_stats) { data[i++] = 0; data[i++] = 0; + continue; } + + ice_fetch_tx_ring_stats(tx_ring, &pkts, &bytes); + + data[i++] = pkts; + data[i++] = bytes; } ice_for_each_alloc_rxq(vsi, j) { + u64 pkts, bytes; + rx_ring = READ_ONCE(vsi->rx_rings[j]); - if (rx_ring && rx_ring->ring_stats) { - data[i++] = rx_ring->ring_stats->stats.pkts; - data[i++] = rx_ring->ring_stats->stats.bytes; - } else { + if (!rx_ring || !rx_ring->ring_stats) { data[i++] = 0; data[i++] = 0; + continue; } + + ice_fetch_rx_ring_stats(rx_ring, &pkts, &bytes); + + data[i++] = pkts; + data[i++] = bytes; } rcu_read_unlock(); @@ -3332,6 +3350,7 @@ process_rx: rx_rings[i].cached_phctime = pf->ptp.cached_phc_time; rx_rings[i].desc = NULL; rx_rings[i].xdp_buf = NULL; + rx_rings[i].xdp_rxq = (struct xdp_rxq_info){ }; /* this is to allow wr32 to have something to write to * during early allocation of Rx buffers @@ -3382,7 +3401,6 @@ process_link: */ rx_rings[i].next_to_use = 0; rx_rings[i].next_to_clean = 0; - rx_rings[i].next_to_alloc = 0; *vsi->rx_rings[i] = rx_rings[i]; } kfree(rx_rings); @@ -4482,7 +4500,7 @@ ice_get_module_eeprom(struct net_device *netdev, u8 addr = ICE_I2C_EEPROM_DEV_ADDR; struct ice_hw *hw = &pf->hw; bool is_sfp = false; - unsigned int i, j; + unsigned int i; u16 offset = 0; u8 page = 0; int status; @@ -4524,26 +4542,19 @@ ice_get_module_eeprom(struct net_device *netdev, if (page == 0 || !(data[0x2] & 0x4)) { u32 copy_len; - /* If i2c bus is busy due to slow page change or - * link management access, call can fail. This is normal. - * So we retry this a few times. - */ - for (j = 0; j < 4; j++) { - status = ice_aq_sff_eeprom(hw, 0, addr, offset, page, - !is_sfp, value, - SFF_READ_BLOCK_SIZE, - 0, NULL); - netdev_dbg(netdev, "SFF %02X %02X %02X %X = %02X%02X%02X%02X.%02X%02X%02X%02X (%X)\n", - addr, offset, page, is_sfp, - value[0], value[1], value[2], value[3], - value[4], value[5], value[6], value[7], - status); - if (status) { - usleep_range(1500, 2500); - memset(value, 0, SFF_READ_BLOCK_SIZE); - continue; - } - break; + status = ice_aq_sff_eeprom(hw, 0, addr, offset, page, + !is_sfp, value, + SFF_READ_BLOCK_SIZE, + 0, NULL); + netdev_dbg(netdev, "SFF %02X %02X %02X %X = %02X%02X%02X%02X.%02X%02X%02X%02X (%pe)\n", + addr, offset, page, is_sfp, + value[0], value[1], value[2], value[3], + value[4], value[5], value[6], value[7], + ERR_PTR(status)); + if (status) { + netdev_err(netdev, "%s: error reading module EEPROM: status %pe\n", + __func__, ERR_PTR(status)); + return status; } /* Make sure we have enough room for the new block */ diff --git a/drivers/net/ethernet/intel/ice/ice_idc.c b/drivers/net/ethernet/intel/ice/ice_idc.c index 420d45c255..ded029aa71 100644 --- a/drivers/net/ethernet/intel/ice/ice_idc.c +++ b/drivers/net/ethernet/intel/ice/ice_idc.c @@ -360,6 +360,39 @@ void ice_unplug_aux_dev(struct ice_pf *pf) auxiliary_device_uninit(adev); } +/** + * ice_rdma_finalize_setup - Complete RDMA setup after VSI is ready + * @pf: ptr to ice_pf + * + * Sets VSI-dependent information and plugs aux device. + * Must be called after ice_init_rdma(), ice_vsi_rebuild(), and + * ice_dcb_rebuild() complete. + */ +void ice_rdma_finalize_setup(struct ice_pf *pf) +{ + struct device *dev = ice_pf_to_dev(pf); + struct iidc_rdma_priv_dev_info *privd; + int ret; + + if (!ice_is_rdma_ena(pf) || !pf->cdev_info) + return; + + privd = pf->cdev_info->iidc_priv; + if (!privd || !pf->vsi || !pf->vsi[0] || !pf->vsi[0]->netdev) + return; + + /* Assign VSI info now that VSI is valid */ + privd->netdev = pf->vsi[0]->netdev; + privd->vport_id = pf->vsi[0]->vsi_num; + + /* Update QoS info after DCB has been rebuilt */ + ice_setup_dcb_qos_info(pf, &privd->qos_info); + + ret = ice_plug_aux_dev(pf); + if (ret) + dev_warn(dev, "Failed to plug RDMA aux device: %d\n", ret); +} + /** * ice_init_rdma - initializes PF for RDMA use * @pf: ptr to ice_pf @@ -398,22 +431,14 @@ int ice_init_rdma(struct ice_pf *pf) } cdev->iidc_priv = privd; - privd->netdev = pf->vsi[0]->netdev; privd->hw_addr = (u8 __iomem *)pf->hw.hw_addr; cdev->pdev = pf->pdev; - privd->vport_id = pf->vsi[0]->vsi_num; pf->cdev_info->rdma_protocol |= IIDC_RDMA_PROTOCOL_ROCEV2; - ice_setup_dcb_qos_info(pf, &privd->qos_info); - ret = ice_plug_aux_dev(pf); - if (ret) - goto err_plug_aux_dev; + return 0; -err_plug_aux_dev: - pf->cdev_info->adev = NULL; - xa_erase(&ice_aux_id, pf->aux_idx); err_alloc_xa: kfree(privd); err_privd_alloc: @@ -432,7 +457,6 @@ void ice_deinit_rdma(struct ice_pf *pf) if (!ice_is_rdma_ena(pf)) return; - ice_unplug_aux_dev(pf); xa_erase(&ice_aux_id, pf->aux_idx); kfree(pf->cdev_info->iidc_priv); kfree(pf->cdev_info); diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c index 7455f27e04..251bfc9379 100644 --- a/drivers/net/ethernet/intel/ice/ice_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_lib.c @@ -2792,12 +2792,14 @@ void ice_vsi_set_napi_queues(struct ice_vsi *vsi) ASSERT_RTNL(); ice_for_each_rxq(vsi, q_idx) - netif_queue_set_napi(netdev, q_idx, NETDEV_QUEUE_TYPE_RX, - &vsi->rx_rings[q_idx]->q_vector->napi); + if (vsi->rx_rings[q_idx] && vsi->rx_rings[q_idx]->q_vector) + netif_queue_set_napi(netdev, q_idx, NETDEV_QUEUE_TYPE_RX, + &vsi->rx_rings[q_idx]->q_vector->napi); ice_for_each_txq(vsi, q_idx) - netif_queue_set_napi(netdev, q_idx, NETDEV_QUEUE_TYPE_TX, - &vsi->tx_rings[q_idx]->q_vector->napi); + if (vsi->tx_rings[q_idx] && vsi->tx_rings[q_idx]->q_vector) + netif_queue_set_napi(netdev, q_idx, NETDEV_QUEUE_TYPE_TX, + &vsi->tx_rings[q_idx]->q_vector->napi); /* Also set the interrupt number for the NAPI */ ice_for_each_q_vector(vsi, v_idx) { struct ice_q_vector *q_vector = vsi->q_vectors[v_idx]; @@ -3437,20 +3439,6 @@ out: return ret; } -/** - * ice_update_ring_stats - Update ring statistics - * @stats: stats to be updated - * @pkts: number of processed packets - * @bytes: number of processed bytes - * - * This function assumes that caller has acquired a u64_stats_sync lock. - */ -static void ice_update_ring_stats(struct ice_q_stats *stats, u64 pkts, u64 bytes) -{ - stats->bytes += bytes; - stats->pkts += pkts; -} - /** * ice_update_tx_ring_stats - Update Tx ring specific counters * @tx_ring: ring to update @@ -3460,7 +3448,8 @@ static void ice_update_ring_stats(struct ice_q_stats *stats, u64 pkts, u64 bytes void ice_update_tx_ring_stats(struct ice_tx_ring *tx_ring, u64 pkts, u64 bytes) { u64_stats_update_begin(&tx_ring->ring_stats->syncp); - ice_update_ring_stats(&tx_ring->ring_stats->stats, pkts, bytes); + u64_stats_add(&tx_ring->ring_stats->pkts, pkts); + u64_stats_add(&tx_ring->ring_stats->bytes, bytes); u64_stats_update_end(&tx_ring->ring_stats->syncp); } @@ -3473,10 +3462,47 @@ void ice_update_tx_ring_stats(struct ice_tx_ring *tx_ring, u64 pkts, u64 bytes) void ice_update_rx_ring_stats(struct ice_rx_ring *rx_ring, u64 pkts, u64 bytes) { u64_stats_update_begin(&rx_ring->ring_stats->syncp); - ice_update_ring_stats(&rx_ring->ring_stats->stats, pkts, bytes); + u64_stats_add(&rx_ring->ring_stats->pkts, pkts); + u64_stats_add(&rx_ring->ring_stats->bytes, bytes); u64_stats_update_end(&rx_ring->ring_stats->syncp); } +/** + * ice_fetch_tx_ring_stats - Fetch Tx ring packet and byte counters + * @ring: ring to update + * @pkts: number of processed packets + * @bytes: number of processed bytes + */ +void ice_fetch_tx_ring_stats(const struct ice_tx_ring *ring, + u64 *pkts, u64 *bytes) +{ + unsigned int start; + + do { + start = u64_stats_fetch_begin(&ring->ring_stats->syncp); + *pkts = u64_stats_read(&ring->ring_stats->pkts); + *bytes = u64_stats_read(&ring->ring_stats->bytes); + } while (u64_stats_fetch_retry(&ring->ring_stats->syncp, start)); +} + +/** + * ice_fetch_rx_ring_stats - Fetch Rx ring packet and byte counters + * @ring: ring to read + * @pkts: number of processed packets + * @bytes: number of processed bytes + */ +void ice_fetch_rx_ring_stats(const struct ice_rx_ring *ring, + u64 *pkts, u64 *bytes) +{ + unsigned int start; + + do { + start = u64_stats_fetch_begin(&ring->ring_stats->syncp); + *pkts = u64_stats_read(&ring->ring_stats->pkts); + *bytes = u64_stats_read(&ring->ring_stats->bytes); + } while (u64_stats_fetch_retry(&ring->ring_stats->syncp, start)); +} + /** * ice_is_dflt_vsi_in_use - check if the default forwarding VSI is being used * @pi: port info of the switch with default VSI diff --git a/drivers/net/ethernet/intel/ice/ice_lib.h b/drivers/net/ethernet/intel/ice/ice_lib.h index fce6f633f5..6f7da84384 100644 --- a/drivers/net/ethernet/intel/ice/ice_lib.h +++ b/drivers/net/ethernet/intel/ice/ice_lib.h @@ -93,6 +93,12 @@ void ice_update_tx_ring_stats(struct ice_tx_ring *ring, u64 pkts, u64 bytes); void ice_update_rx_ring_stats(struct ice_rx_ring *ring, u64 pkts, u64 bytes); +void ice_fetch_tx_ring_stats(const struct ice_tx_ring *ring, + u64 *pkts, u64 *bytes); + +void ice_fetch_rx_ring_stats(const struct ice_rx_ring *ring, + u64 *pkts, u64 *bytes); + void ice_write_intrl(struct ice_q_vector *q_vector, u8 intrl); void ice_write_itr(struct ice_ring_container *rc, u16 itr); void ice_set_q_vector_intrl(struct ice_q_vector *q_vector); diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index b4deab76b6..2cf3ed9542 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -159,8 +159,8 @@ static void ice_check_for_hang_subtask(struct ice_pf *pf) * prev_pkt would be negative if there was no * pending work. */ - packets = ring_stats->stats.pkts & INT_MAX; - if (ring_stats->tx_stats.prev_pkt == packets) { + packets = ice_stats_read(ring_stats, pkts) & INT_MAX; + if (ring_stats->tx.prev_pkt == packets) { /* Trigger sw interrupt to revive the queue */ ice_trigger_sw_intr(hw, tx_ring->q_vector); continue; @@ -170,7 +170,7 @@ static void ice_check_for_hang_subtask(struct ice_pf *pf) * to ice_get_tx_pending() */ smp_rmb(); - ring_stats->tx_stats.prev_pkt = + ring_stats->tx.prev_pkt = ice_get_tx_pending(tx_ring) ? packets : -1; } } @@ -5138,6 +5138,9 @@ int ice_load(struct ice_pf *pf) if (err) goto err_init_rdma; + /* Finalize RDMA: VSI already created, assign info and plug device */ + ice_rdma_finalize_setup(pf); + ice_service_task_restart(pf); clear_bit(ICE_DOWN, pf->state); @@ -5169,6 +5172,7 @@ void ice_unload(struct ice_pf *pf) devl_assert_locked(priv_to_devlink(pf)); + ice_unplug_aux_dev(pf); ice_deinit_rdma(pf); ice_deinit_features(pf); ice_tc_indir_block_unregister(vsi); @@ -5595,6 +5599,7 @@ static int ice_suspend(struct device *dev) */ disabled = ice_service_task_stop(pf); + ice_unplug_aux_dev(pf); ice_deinit_rdma(pf); /* Already suspended?, then there is nothing to do */ @@ -6826,58 +6831,132 @@ int ice_up(struct ice_vsi *vsi) return err; } +struct ice_vsi_tx_stats { + u64 pkts; + u64 bytes; + u64 tx_restart_q; + u64 tx_busy; + u64 tx_linearize; +}; + +struct ice_vsi_rx_stats { + u64 pkts; + u64 bytes; + u64 rx_non_eop_descs; + u64 rx_page_failed; + u64 rx_buf_failed; +}; + /** - * ice_fetch_u64_stats_per_ring - get packets and bytes stats per ring - * @syncp: pointer to u64_stats_sync - * @stats: stats that pkts and bytes count will be taken from - * @pkts: packets stats counter - * @bytes: bytes stats counter + * ice_fetch_u64_tx_stats - get Tx stats from a ring + * @ring: the Tx ring to copy stats from + * @copy: temporary storage for the ring statistics * - * This function fetches stats from the ring considering the atomic operations - * that needs to be performed to read u64 values in 32 bit machine. + * Fetch the u64 stats from the ring using u64_stats_fetch. This ensures each + * stat value is self-consistent, though not necessarily consistent w.r.t + * other stats. */ -void -ice_fetch_u64_stats_per_ring(struct u64_stats_sync *syncp, - struct ice_q_stats stats, u64 *pkts, u64 *bytes) +static void ice_fetch_u64_tx_stats(struct ice_tx_ring *ring, + struct ice_vsi_tx_stats *copy) { + struct ice_ring_stats *stats = ring->ring_stats; unsigned int start; do { - start = u64_stats_fetch_begin(syncp); - *pkts = stats.pkts; - *bytes = stats.bytes; - } while (u64_stats_fetch_retry(syncp, start)); + start = u64_stats_fetch_begin(&stats->syncp); + copy->pkts = u64_stats_read(&stats->pkts); + copy->bytes = u64_stats_read(&stats->bytes); + copy->tx_restart_q = u64_stats_read(&stats->tx_restart_q); + copy->tx_busy = u64_stats_read(&stats->tx_busy); + copy->tx_linearize = u64_stats_read(&stats->tx_linearize); + } while (u64_stats_fetch_retry(&stats->syncp, start)); +} + +/** + * ice_fetch_u64_rx_stats - get Rx stats from a ring + * @ring: the Rx ring to copy stats from + * @copy: temporary storage for the ring statistics + * + * Fetch the u64 stats from the ring using u64_stats_fetch. This ensures each + * stat value is self-consistent, though not necessarily consistent w.r.t + * other stats. + */ +static void ice_fetch_u64_rx_stats(struct ice_rx_ring *ring, + struct ice_vsi_rx_stats *copy) +{ + struct ice_ring_stats *stats = ring->ring_stats; + unsigned int start; + + do { + start = u64_stats_fetch_begin(&stats->syncp); + copy->pkts = u64_stats_read(&stats->pkts); + copy->bytes = u64_stats_read(&stats->bytes); + copy->rx_non_eop_descs = + u64_stats_read(&stats->rx_non_eop_descs); + copy->rx_page_failed = u64_stats_read(&stats->rx_page_failed); + copy->rx_buf_failed = u64_stats_read(&stats->rx_buf_failed); + } while (u64_stats_fetch_retry(&stats->syncp, start)); } /** * ice_update_vsi_tx_ring_stats - Update VSI Tx ring stats counters * @vsi: the VSI to be updated - * @vsi_stats: the stats struct to be updated + * @vsi_stats: accumulated stats for this VSI * @rings: rings to work on * @count: number of rings */ -static void -ice_update_vsi_tx_ring_stats(struct ice_vsi *vsi, - struct rtnl_link_stats64 *vsi_stats, - struct ice_tx_ring **rings, u16 count) +static void ice_update_vsi_tx_ring_stats(struct ice_vsi *vsi, + struct ice_vsi_tx_stats *vsi_stats, + struct ice_tx_ring **rings, u16 count) { + struct ice_vsi_tx_stats copy = {}; u16 i; for (i = 0; i < count; i++) { struct ice_tx_ring *ring; - u64 pkts = 0, bytes = 0; ring = READ_ONCE(rings[i]); if (!ring || !ring->ring_stats) continue; - ice_fetch_u64_stats_per_ring(&ring->ring_stats->syncp, - ring->ring_stats->stats, &pkts, - &bytes); - vsi_stats->tx_packets += pkts; - vsi_stats->tx_bytes += bytes; - vsi->tx_restart += ring->ring_stats->tx_stats.restart_q; - vsi->tx_busy += ring->ring_stats->tx_stats.tx_busy; - vsi->tx_linearize += ring->ring_stats->tx_stats.tx_linearize; + + ice_fetch_u64_tx_stats(ring, ©); + + vsi_stats->pkts += copy.pkts; + vsi_stats->bytes += copy.bytes; + vsi_stats->tx_restart_q += copy.tx_restart_q; + vsi_stats->tx_busy += copy.tx_busy; + vsi_stats->tx_linearize += copy.tx_linearize; + } +} + +/** + * ice_update_vsi_rx_ring_stats - Update VSI Rx ring stats counters + * @vsi: the VSI to be updated + * @vsi_stats: accumulated stats for this VSI + * @rings: rings to work on + * @count: number of rings + */ +static void ice_update_vsi_rx_ring_stats(struct ice_vsi *vsi, + struct ice_vsi_rx_stats *vsi_stats, + struct ice_rx_ring **rings, u16 count) +{ + struct ice_vsi_rx_stats copy = {}; + u16 i; + + for (i = 0; i < count; i++) { + struct ice_rx_ring *ring; + + ring = READ_ONCE(rings[i]); + if (!ring || !ring->ring_stats) + continue; + + ice_fetch_u64_rx_stats(ring, ©); + + vsi_stats->pkts += copy.pkts; + vsi_stats->bytes += copy.bytes; + vsi_stats->rx_non_eop_descs += copy.rx_non_eop_descs; + vsi_stats->rx_page_failed += copy.rx_page_failed; + vsi_stats->rx_buf_failed += copy.rx_buf_failed; } } @@ -6888,50 +6967,34 @@ ice_update_vsi_tx_ring_stats(struct ice_vsi *vsi, static void ice_update_vsi_ring_stats(struct ice_vsi *vsi) { struct rtnl_link_stats64 *net_stats, *stats_prev; - struct rtnl_link_stats64 *vsi_stats; + struct ice_vsi_tx_stats tx_stats = {}; + struct ice_vsi_rx_stats rx_stats = {}; struct ice_pf *pf = vsi->back; - u64 pkts, bytes; - int i; - - vsi_stats = kzalloc(sizeof(*vsi_stats), GFP_ATOMIC); - if (!vsi_stats) - return; - - /* reset non-netdev (extended) stats */ - vsi->tx_restart = 0; - vsi->tx_busy = 0; - vsi->tx_linearize = 0; - vsi->rx_buf_failed = 0; - vsi->rx_page_failed = 0; rcu_read_lock(); /* update Tx rings counters */ - ice_update_vsi_tx_ring_stats(vsi, vsi_stats, vsi->tx_rings, + ice_update_vsi_tx_ring_stats(vsi, &tx_stats, vsi->tx_rings, vsi->num_txq); /* update Rx rings counters */ - ice_for_each_rxq(vsi, i) { - struct ice_rx_ring *ring = READ_ONCE(vsi->rx_rings[i]); - struct ice_ring_stats *ring_stats; - - ring_stats = ring->ring_stats; - ice_fetch_u64_stats_per_ring(&ring_stats->syncp, - ring_stats->stats, &pkts, - &bytes); - vsi_stats->rx_packets += pkts; - vsi_stats->rx_bytes += bytes; - vsi->rx_buf_failed += ring_stats->rx_stats.alloc_buf_failed; - vsi->rx_page_failed += ring_stats->rx_stats.alloc_page_failed; - } + ice_update_vsi_rx_ring_stats(vsi, &rx_stats, vsi->rx_rings, + vsi->num_rxq); /* update XDP Tx rings counters */ if (ice_is_xdp_ena_vsi(vsi)) - ice_update_vsi_tx_ring_stats(vsi, vsi_stats, vsi->xdp_rings, + ice_update_vsi_tx_ring_stats(vsi, &tx_stats, vsi->xdp_rings, vsi->num_xdp_txq); rcu_read_unlock(); + /* Save non-netdev (extended) stats */ + vsi->tx_restart = tx_stats.tx_restart_q; + vsi->tx_busy = tx_stats.tx_busy; + vsi->tx_linearize = tx_stats.tx_linearize; + vsi->rx_buf_failed = rx_stats.rx_buf_failed; + vsi->rx_page_failed = rx_stats.rx_page_failed; + net_stats = &vsi->net_stats; stats_prev = &vsi->net_stats_prev; @@ -6941,18 +7004,16 @@ static void ice_update_vsi_ring_stats(struct ice_vsi *vsi) * let's skip this round. */ if (likely(pf->stat_prev_loaded)) { - net_stats->tx_packets += vsi_stats->tx_packets - stats_prev->tx_packets; - net_stats->tx_bytes += vsi_stats->tx_bytes - stats_prev->tx_bytes; - net_stats->rx_packets += vsi_stats->rx_packets - stats_prev->rx_packets; - net_stats->rx_bytes += vsi_stats->rx_bytes - stats_prev->rx_bytes; + net_stats->tx_packets += tx_stats.pkts - stats_prev->tx_packets; + net_stats->tx_bytes += tx_stats.bytes - stats_prev->tx_bytes; + net_stats->rx_packets += rx_stats.pkts - stats_prev->rx_packets; + net_stats->rx_bytes += rx_stats.bytes - stats_prev->rx_bytes; } - stats_prev->tx_packets = vsi_stats->tx_packets; - stats_prev->tx_bytes = vsi_stats->tx_bytes; - stats_prev->rx_packets = vsi_stats->rx_packets; - stats_prev->rx_bytes = vsi_stats->rx_bytes; - - kfree(vsi_stats); + stats_prev->tx_packets = tx_stats.pkts; + stats_prev->tx_bytes = tx_stats.bytes; + stats_prev->rx_packets = rx_stats.pkts; + stats_prev->rx_bytes = rx_stats.bytes; } /** @@ -6986,7 +7047,6 @@ void ice_update_vsi_stats(struct ice_vsi *vsi) cur_ns->rx_errors = pf->stats.crc_errors + pf->stats.illegal_bytes + pf->stats.rx_undersize + - pf->hw_csum_rx_error + pf->stats.rx_jabber + pf->stats.rx_fragments + pf->stats.rx_oversize; @@ -7806,7 +7866,7 @@ static void ice_rebuild(struct ice_pf *pf, enum ice_reset_req reset_type) ice_health_clear(pf); - ice_plug_aux_dev(pf); + ice_rdma_finalize_setup(pf); if (ice_is_feature_supported(pf, ICE_F_SRIOV_LAG)) ice_lag_rebuild(pf); diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c index 0711ff6088..2692ee441c 100644 --- a/drivers/net/ethernet/intel/ice/ice_ptp.c +++ b/drivers/net/ethernet/intel/ice/ice_ptp.c @@ -1296,12 +1296,10 @@ void ice_ptp_link_change(struct ice_pf *pf, bool linkup) if (pf->hw.reset_ongoing) return; - if (hw->mac_type == ICE_MAC_GENERIC_3K_E825) { + if (hw->mac_type == ICE_MAC_GENERIC_3K_E825 && + test_bit(ICE_FLAG_DPLL, pf->flags)) { int pin, err; - if (!test_bit(ICE_FLAG_DPLL, pf->flags)) - return; - mutex_lock(&pf->dplls.lock); for (pin = 0; pin < ICE_SYNCE_CLK_NUM; pin++) { enum ice_synce_clk clk_pin; @@ -1314,15 +1312,19 @@ void ice_ptp_link_change(struct ice_pf *pf, bool linkup) port_num, &active, clk_pin); - if (WARN_ON_ONCE(err)) { - mutex_unlock(&pf->dplls.lock); - return; + if (err) { + dev_err_once(ice_pf_to_dev(pf), + "Failed to read SyncE bypass mux for pin %d, err %d\n", + pin, err); + break; } err = ice_tspll_cfg_synce_ethdiv_e825c(hw, clk_pin); - if (active && WARN_ON_ONCE(err)) { - mutex_unlock(&pf->dplls.lock); - return; + if (active && err) { + dev_err_once(ice_pf_to_dev(pf), + "Failed to configure SyncE ETH divider for pin %d, err %d\n", + pin, err); + break; } } mutex_unlock(&pf->dplls.lock); @@ -1334,9 +1336,12 @@ void ice_ptp_link_change(struct ice_pf *pf, bool linkup) /* Do not reconfigure E810 or E830 PHY */ return; case ICE_MAC_GENERIC: - case ICE_MAC_GENERIC_3K_E825: ice_ptp_port_phy_restart(ptp_port); return; + case ICE_MAC_GENERIC_3K_E825: + if (linkup) + ice_ptp_port_phy_restart(ptp_port); + return; default: dev_warn(ice_pf_to_dev(pf), "%s: Unknown PHY type\n", __func__); } @@ -3077,7 +3082,13 @@ static int ice_ptp_setup_pf(struct ice_pf *pf) struct ice_ptp *ctrl_ptp = ice_get_ctrl_ptp(pf); struct ice_ptp *ptp = &pf->ptp; - if (WARN_ON(!ctrl_ptp) || pf->hw.mac_type == ICE_MAC_UNKNOWN) + if (!ctrl_ptp) { + dev_info(ice_pf_to_dev(pf), + "PTP unavailable: no controlling PF\n"); + return -EOPNOTSUPP; + } + + if (pf->hw.mac_type == ICE_MAC_UNKNOWN) return -ENODEV; INIT_LIST_HEAD(&ptp->port.list_node); diff --git a/drivers/net/ethernet/intel/ice/ice_ptp_consts.h b/drivers/net/ethernet/intel/ice/ice_ptp_consts.h index 19dddd9b53..4d298c27bf 100644 --- a/drivers/net/ethernet/intel/ice/ice_ptp_consts.h +++ b/drivers/net/ethernet/intel/ice/ice_ptp_consts.h @@ -78,14 +78,14 @@ struct ice_eth56g_mac_reg_cfg eth56g_mac_cfg[NUM_ICE_ETH56G_LNK_SPD] = { .blktime = 0x666, /* 3.2 */ .tx_offset = { .serdes = 0x234c, /* 17.6484848 */ - .no_fec = 0x8e80, /* 71.25 */ + .no_fec = 0x93d9, /* 73 */ .fc = 0xb4a4, /* 90.32 */ .sfd = 0x4a4, /* 2.32 */ .onestep = 0x4ccd /* 38.4 */ }, .rx_offset = { .serdes = 0xffffeb27, /* -10.42424 */ - .no_fec = 0xffffcccd, /* -25.6 */ + .no_fec = 0xffffc7b6, /* -28 */ .fc = 0xfffc557b, /* -469.26 */ .sfd = 0x4a4, /* 2.32 */ .bs_ds = 0x32 /* 0.0969697 */ @@ -118,17 +118,17 @@ struct ice_eth56g_mac_reg_cfg eth56g_mac_cfg[NUM_ICE_ETH56G_LNK_SPD] = { .mktime = 0x147b, /* 10.24, only if RS-FEC enabled */ .tx_offset = { .serdes = 0xe1e, /* 7.0593939 */ - .no_fec = 0x3857, /* 28.17 */ + .no_fec = 0x4266, /* 33 */ .fc = 0x48c3, /* 36.38 */ - .rs = 0x8100, /* 64.5 */ + .rs = 0x8a00, /* 69 */ .sfd = 0x1dc, /* 0.93 */ .onestep = 0x1eb8 /* 15.36 */ }, .rx_offset = { .serdes = 0xfffff7a9, /* -4.1697 */ - .no_fec = 0xffffe71a, /* -12.45 */ + .no_fec = 0xffffe700, /* -12 */ .fc = 0xfffe894d, /* -187.35 */ - .rs = 0xfffff8cd, /* -3.6 */ + .rs = 0xfffff8cc, /* -3 */ .sfd = 0x1dc, /* 0.93 */ .bs_ds = 0x14 /* 0.0387879, RS-FEC 0 */ } diff --git a/drivers/net/ethernet/intel/ice/ice_ptp_hw.c b/drivers/net/ethernet/intel/ice/ice_ptp_hw.c index 61c0a0d93e..5a5c511ccb 100644 --- a/drivers/net/ethernet/intel/ice/ice_ptp_hw.c +++ b/drivers/net/ethernet/intel/ice/ice_ptp_hw.c @@ -5381,8 +5381,8 @@ int ice_ptp_write_incval_locked(struct ice_hw *hw, u64 incval) */ int ice_ptp_adj_clock(struct ice_hw *hw, s32 adj) { + int err = 0; u8 tmr_idx; - int err; tmr_idx = hw->func_caps.ts_func_info.tmr_index_owned; @@ -5399,8 +5399,8 @@ int ice_ptp_adj_clock(struct ice_hw *hw, s32 adj) err = ice_ptp_prep_phy_adj_e810(hw, adj); break; case ICE_MAC_E830: - /* E830 sync PHYs automatically after setting GLTSYN_SHADJ */ - return 0; + /* E830 sync PHYs automatically after setting cmd register */ + break; case ICE_MAC_GENERIC: err = ice_ptp_prep_phy_adj_e82x(hw, adj); break; diff --git a/drivers/net/ethernet/intel/ice/ice_ptp_hw.h b/drivers/net/ethernet/intel/ice/ice_ptp_hw.h index 5896b346e5..9bfd3e79c5 100644 --- a/drivers/net/ethernet/intel/ice/ice_ptp_hw.h +++ b/drivers/net/ethernet/intel/ice/ice_ptp_hw.h @@ -258,7 +258,7 @@ enum ice_si_cgu_out_pins { }; struct ice_cgu_pin_desc { - char *name; + const char *name; u8 index; enum dpll_pin_type type; u32 freq_supp_num; diff --git a/drivers/net/ethernet/intel/ice/ice_repr.c b/drivers/net/ethernet/intel/ice/ice_repr.c index cb08746556..f1e82ba155 100644 --- a/drivers/net/ethernet/intel/ice/ice_repr.c +++ b/drivers/net/ethernet/intel/ice/ice_repr.c @@ -2,6 +2,7 @@ /* Copyright (C) 2019-2021, Intel Corporation. */ #include "ice.h" +#include "ice_lib.h" #include "ice_eswitch.h" #include "devlink/devlink.h" #include "devlink/port.h" @@ -67,7 +68,7 @@ ice_repr_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats) return; vsi = repr->src_vsi; - ice_update_vsi_stats(vsi); + ice_update_eth_stats(vsi); eth_stats = &vsi->eth_stats; stats->tx_packets = eth_stats->tx_unicast + eth_stats->tx_broadcast + @@ -315,7 +316,7 @@ ice_repr_reg_netdev(struct net_device *netdev, const struct net_device_ops *ops) static int ice_repr_ready_vf(struct ice_repr *repr) { - return !ice_check_vf_ready_for_cfg(repr->vf); + return ice_check_vf_ready_for_cfg(repr->vf); } static int ice_repr_ready_sf(struct ice_repr *repr) diff --git a/drivers/net/ethernet/intel/ice/ice_sf_eth.c b/drivers/net/ethernet/intel/ice/ice_sf_eth.c index 1a2c94375c..f7266d0368 100644 --- a/drivers/net/ethernet/intel/ice/ice_sf_eth.c +++ b/drivers/net/ethernet/intel/ice/ice_sf_eth.c @@ -305,6 +305,8 @@ ice_sf_eth_activate(struct ice_dynamic_port *dyn_port, aux_dev_uninit: auxiliary_device_uninit(&sf_dev->adev); + return err; + sf_dev_free: kfree(sf_dev); xa_erase: diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c index 84848f0123..9034174779 100644 --- a/drivers/net/ethernet/intel/ice/ice_switch.c +++ b/drivers/net/ethernet/intel/ice/ice_switch.c @@ -4984,10 +4984,8 @@ ice_find_free_recp_res_idx(struct ice_hw *hw, const unsigned long *profiles, hw->switch_info->recp_list[bit].res_idxs, ICE_MAX_FV_WORDS); - bitmap_xor(free_idx, used_idx, possible_idx, ICE_MAX_FV_WORDS); - /* return number of free indexes */ - return (u16)bitmap_weight(free_idx, ICE_MAX_FV_WORDS); + return (u16)bitmap_weighted_xor(free_idx, used_idx, possible_idx, ICE_MAX_FV_WORDS); } /** diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c index ad76768a42..8f348b222d 100644 --- a/drivers/net/ethernet/intel/ice/ice_txrx.c +++ b/drivers/net/ethernet/intel/ice/ice_txrx.c @@ -379,7 +379,7 @@ static bool ice_clean_tx_irq(struct ice_tx_ring *tx_ring, int napi_budget) if (netif_tx_queue_stopped(txring_txq(tx_ring)) && !test_bit(ICE_VSI_DOWN, vsi->state)) { netif_tx_wake_queue(txring_txq(tx_ring)); - ++tx_ring->ring_stats->tx_stats.restart_q; + ice_stats_inc(tx_ring->ring_stats, tx_restart_q); } } @@ -499,7 +499,7 @@ int ice_setup_tx_ring(struct ice_tx_ring *tx_ring) tx_ring->next_to_use = 0; tx_ring->next_to_clean = 0; - tx_ring->ring_stats->tx_stats.prev_pkt = -1; + tx_ring->ring_stats->tx.prev_pkt = -1; return 0; err: @@ -560,7 +560,9 @@ void ice_clean_rx_ring(struct ice_rx_ring *rx_ring) i = 0; } - if (rx_ring->vsi->type == ICE_VSI_PF && + if ((rx_ring->vsi->type == ICE_VSI_PF || + rx_ring->vsi->type == ICE_VSI_SF || + rx_ring->vsi->type == ICE_VSI_LB) && xdp_rxq_info_is_reg(&rx_ring->xdp_rxq)) { xdp_rxq_info_detach_mem_model(&rx_ring->xdp_rxq); xdp_rxq_info_unreg(&rx_ring->xdp_rxq); @@ -574,7 +576,6 @@ rx_skip_free: PAGE_SIZE); memset(rx_ring->desc, 0, size); - rx_ring->next_to_alloc = 0; rx_ring->next_to_clean = 0; rx_ring->next_to_use = 0; } @@ -849,7 +850,7 @@ bool ice_alloc_rx_bufs(struct ice_rx_ring *rx_ring, unsigned int cleaned_count) addr = libeth_rx_alloc(&fq, ntu); if (addr == DMA_MAPPING_ERROR) { - rx_ring->ring_stats->rx_stats.alloc_page_failed++; + ice_stats_inc(rx_ring->ring_stats, rx_page_failed); break; } @@ -863,7 +864,7 @@ bool ice_alloc_rx_bufs(struct ice_rx_ring *rx_ring, unsigned int cleaned_count) addr = libeth_rx_alloc(&hdr_fq, ntu); if (addr == DMA_MAPPING_ERROR) { - rx_ring->ring_stats->rx_stats.alloc_page_failed++; + ice_stats_inc(rx_ring->ring_stats, rx_page_failed); libeth_rx_recycle_slow(fq.fqes[ntu].netmem); break; @@ -1045,7 +1046,7 @@ construct_skb: /* exit if we failed to retrieve a buffer */ if (!skb) { libeth_xdp_return_buff_slow(xdp); - rx_ring->ring_stats->rx_stats.alloc_buf_failed++; + ice_stats_inc(rx_ring->ring_stats, rx_buf_failed); continue; } @@ -1087,35 +1088,36 @@ static void __ice_update_sample(struct ice_q_vector *q_vector, struct dim_sample *sample, bool is_tx) { - u64 packets = 0, bytes = 0; + u64 total_packets = 0, total_bytes = 0, pkts, bytes; if (is_tx) { struct ice_tx_ring *tx_ring; ice_for_each_tx_ring(tx_ring, *rc) { - struct ice_ring_stats *ring_stats; - - ring_stats = tx_ring->ring_stats; - if (!ring_stats) + if (!tx_ring->ring_stats) continue; - packets += ring_stats->stats.pkts; - bytes += ring_stats->stats.bytes; + + ice_fetch_tx_ring_stats(tx_ring, &pkts, &bytes); + + total_packets += pkts; + total_bytes += bytes; } } else { struct ice_rx_ring *rx_ring; ice_for_each_rx_ring(rx_ring, *rc) { - struct ice_ring_stats *ring_stats; - - ring_stats = rx_ring->ring_stats; - if (!ring_stats) + if (!rx_ring->ring_stats) continue; - packets += ring_stats->stats.pkts; - bytes += ring_stats->stats.bytes; + + ice_fetch_rx_ring_stats(rx_ring, &pkts, &bytes); + + total_packets += pkts; + total_bytes += bytes; } } - dim_update_sample(q_vector->total_events, packets, bytes, sample); + dim_update_sample(q_vector->total_events, + total_packets, total_bytes, sample); sample->comp_ctr = 0; /* if dim settings get stale, like when not updated for 1 @@ -1362,7 +1364,7 @@ static int __ice_maybe_stop_tx(struct ice_tx_ring *tx_ring, unsigned int size) /* A reprieve! - use start_queue because it doesn't call schedule */ netif_tx_start_queue(txring_txq(tx_ring)); - ++tx_ring->ring_stats->tx_stats.restart_q; + ice_stats_inc(tx_ring->ring_stats, tx_restart_q); return 0; } @@ -2156,6 +2158,9 @@ ice_xmit_frame_ring(struct sk_buff *skb, struct ice_tx_ring *tx_ring) ice_trace(xmit_frame_ring, tx_ring, skb); + /* record the location of the first descriptor for this packet */ + first = &tx_ring->tx_buf[tx_ring->next_to_use]; + if (unlikely(ipv6_hopopt_jumbo_remove(skb))) goto out_drop; @@ -2164,7 +2169,7 @@ ice_xmit_frame_ring(struct sk_buff *skb, struct ice_tx_ring *tx_ring) if (__skb_linearize(skb)) goto out_drop; count = ice_txd_use_count(skb->len); - tx_ring->ring_stats->tx_stats.tx_linearize++; + ice_stats_inc(tx_ring->ring_stats, tx_linearize); } /* need: 1 descriptor per page * PAGE_SIZE/ICE_MAX_DATA_PER_TXD, @@ -2175,7 +2180,7 @@ ice_xmit_frame_ring(struct sk_buff *skb, struct ice_tx_ring *tx_ring) */ if (ice_maybe_stop_tx(tx_ring, count + ICE_DESCS_PER_CACHE_LINE + ICE_DESCS_FOR_CTX_DESC)) { - tx_ring->ring_stats->tx_stats.tx_busy++; + ice_stats_inc(tx_ring->ring_stats, tx_busy); return NETDEV_TX_BUSY; } @@ -2184,8 +2189,6 @@ ice_xmit_frame_ring(struct sk_buff *skb, struct ice_tx_ring *tx_ring) offload.tx_ring = tx_ring; - /* record the location of the first descriptor for this packet */ - first = &tx_ring->tx_buf[tx_ring->next_to_use]; first->skb = skb; first->type = ICE_TX_BUF_SKB; first->bytecount = max_t(unsigned int, skb->len, ETH_ZLEN); @@ -2250,6 +2253,7 @@ ice_xmit_frame_ring(struct sk_buff *skb, struct ice_tx_ring *tx_ring) out_drop: ice_trace(xmit_frame_ring_drop, tx_ring, skb); dev_kfree_skb_any(skb); + first->type = ICE_TX_BUF_EMPTY; return NETDEV_TX_OK; } diff --git a/drivers/net/ethernet/intel/ice/ice_txrx.h b/drivers/net/ethernet/intel/ice/ice_txrx.h index e440c55d9e..b6547e1b7c 100644 --- a/drivers/net/ethernet/intel/ice/ice_txrx.h +++ b/drivers/net/ethernet/intel/ice/ice_txrx.h @@ -129,34 +129,65 @@ struct ice_tx_offload_params { u8 header_len; }; -struct ice_q_stats { - u64 pkts; - u64 bytes; -}; - -struct ice_txq_stats { - u64 restart_q; - u64 tx_busy; - u64 tx_linearize; - int prev_pkt; /* negative if no pending Tx descriptors */ -}; - -struct ice_rxq_stats { - u64 non_eop_descs; - u64 alloc_page_failed; - u64 alloc_buf_failed; -}; - struct ice_ring_stats { struct rcu_head rcu; /* to avoid race on free */ - struct ice_q_stats stats; struct u64_stats_sync syncp; - union { - struct ice_txq_stats tx_stats; - struct ice_rxq_stats rx_stats; - }; + struct_group(stats, + u64_stats_t pkts; + u64_stats_t bytes; + union { + struct_group(tx, + u64_stats_t tx_restart_q; + u64_stats_t tx_busy; + u64_stats_t tx_linearize; + /* negative if no pending Tx descriptors */ + int prev_pkt; + ); + struct_group(rx, + u64_stats_t rx_non_eop_descs; + u64_stats_t rx_page_failed; + u64_stats_t rx_buf_failed; + ); + }; + ); }; +/** + * ice_stats_read - Read a single ring stat value + * @stats: pointer to ring_stats structure for a queue + * @member: the ice_ring_stats member to read + * + * Shorthand for reading a single 64-bit stat value from struct + * ice_ring_stats. + * + * Return: the value of the requested stat. + */ +#define ice_stats_read(stats, member) ({ \ + struct ice_ring_stats *__stats = (stats); \ + unsigned int start; \ + u64 val; \ + do { \ + start = u64_stats_fetch_begin(&__stats->syncp); \ + val = u64_stats_read(&__stats->member); \ + } while (u64_stats_fetch_retry(&__stats->syncp, start)); \ + val; \ +}) + +/** + * ice_stats_inc - Increment a single ring stat value + * @stats: pointer to the ring_stats structure for a queue + * @member: the ice_ring_stats member to increment + * + * Shorthand for incrementing a single 64-bit stat value in struct + * ice_ring_stats. + */ +#define ice_stats_inc(stats, member) do { \ + struct ice_ring_stats *__stats = (stats); \ + u64_stats_update_begin(&__stats->syncp); \ + u64_stats_inc(&__stats->member); \ + u64_stats_update_end(&__stats->syncp); \ +} while (0) + enum ice_ring_state_t { ICE_TX_XPS_INIT_DONE, ICE_TX_NBITS, @@ -236,34 +267,49 @@ struct ice_tstamp_ring { } ____cacheline_internodealigned_in_smp; struct ice_rx_ring { - /* CL1 - 1st cacheline starts here */ + __cacheline_group_begin_aligned(read_mostly); void *desc; /* Descriptor ring memory */ struct page_pool *pp; struct net_device *netdev; /* netdev ring maps to */ - struct ice_vsi *vsi; /* Backreference to associated VSI */ struct ice_q_vector *q_vector; /* Backreference to associated vector */ u8 __iomem *tail; - u16 q_index; /* Queue number of ring */ - - u16 count; /* Number of descriptors */ - u16 reg_idx; /* HW register index of the ring */ - u16 next_to_alloc; union { struct libeth_fqe *rx_fqes; struct xdp_buff **xdp_buf; }; - /* CL2 - 2nd cacheline starts here */ - struct libeth_fqe *hdr_fqes; - struct page_pool *hdr_pp; + u16 count; /* Number of descriptors */ + u8 ptp_rx; + u8 flags; +#define ICE_RX_FLAGS_CRC_STRIP_DIS BIT(2) +#define ICE_RX_FLAGS_MULTIDEV BIT(3) +#define ICE_RX_FLAGS_RING_GCS BIT(4) + + u32 truesize; + + struct page_pool *hdr_pp; + struct libeth_fqe *hdr_fqes; + + struct bpf_prog *xdp_prog; + struct ice_tx_ring *xdp_ring; + struct xsk_buff_pool *xsk_pool; + + /* stats structs */ + struct ice_ring_stats *ring_stats; + struct ice_rx_ring *next; /* pointer to next ring in q_vector */ + + u32 hdr_truesize; + + struct xdp_rxq_info xdp_rxq; + __cacheline_group_end_aligned(read_mostly); + + __cacheline_group_begin_aligned(read_write); union { struct libeth_xdp_buff_stash xdp; struct libeth_xdp_buff *xsk; }; - - /* CL3 - 3rd cacheline starts here */ union { struct ice_pkt_ctx pkt_ctx; struct { @@ -271,75 +317,78 @@ struct ice_rx_ring { __be16 vlan_proto; }; }; - struct bpf_prog *xdp_prog; /* used in interrupt processing */ u16 next_to_use; u16 next_to_clean; + __cacheline_group_end_aligned(read_write); - u32 hdr_truesize; - u32 truesize; - - /* stats structs */ - struct ice_ring_stats *ring_stats; - + __cacheline_group_begin_aligned(cold); struct rcu_head rcu; /* to avoid race on free */ - /* CL4 - 4th cacheline starts here */ + struct ice_vsi *vsi; /* Backreference to associated VSI */ struct ice_channel *ch; - struct ice_tx_ring *xdp_ring; - struct ice_rx_ring *next; /* pointer to next ring in q_vector */ - struct xsk_buff_pool *xsk_pool; + + dma_addr_t dma; /* physical address of ring */ + u16 q_index; /* Queue number of ring */ + u16 reg_idx; /* HW register index of the ring */ + u8 dcb_tc; /* Traffic class of ring */ + u16 rx_hdr_len; u16 rx_buf_len; - dma_addr_t dma; /* physical address of ring */ - u8 dcb_tc; /* Traffic class of ring */ - u8 ptp_rx; -#define ICE_RX_FLAGS_CRC_STRIP_DIS BIT(2) -#define ICE_RX_FLAGS_MULTIDEV BIT(3) -#define ICE_RX_FLAGS_RING_GCS BIT(4) - u8 flags; - /* CL5 - 5th cacheline starts here */ - struct xdp_rxq_info xdp_rxq; + __cacheline_group_end_aligned(cold); } ____cacheline_internodealigned_in_smp; struct ice_tx_ring { - /* CL1 - 1st cacheline starts here */ - struct ice_tx_ring *next; /* pointer to next ring in q_vector */ + __cacheline_group_begin_aligned(read_mostly); void *desc; /* Descriptor ring memory */ struct device *dev; /* Used for DMA mapping */ u8 __iomem *tail; struct ice_tx_buf *tx_buf; + struct ice_q_vector *q_vector; /* Backreference to associated vector */ struct net_device *netdev; /* netdev ring maps to */ struct ice_vsi *vsi; /* Backreference to associated VSI */ - /* CL2 - 2nd cacheline starts here */ - dma_addr_t dma; /* physical address of ring */ - struct xsk_buff_pool *xsk_pool; - u16 next_to_use; - u16 next_to_clean; - u16 q_handle; /* Queue handle per TC */ - u16 reg_idx; /* HW register index of the ring */ + u16 count; /* Number of descriptors */ u16 q_index; /* Queue number of ring */ - u16 xdp_tx_active; - /* stats structs */ - struct ice_ring_stats *ring_stats; - /* CL3 - 3rd cacheline starts here */ - struct rcu_head rcu; /* to avoid race on free */ - DECLARE_BITMAP(xps_state, ICE_TX_NBITS); /* XPS Config State */ - struct ice_channel *ch; - struct ice_ptp_tx *tx_tstamps; - spinlock_t tx_lock; - u32 txq_teid; /* Added Tx queue TEID */ - /* CL4 - 4th cacheline starts here */ - struct ice_tstamp_ring *tstamp_ring; + + u8 flags; #define ICE_TX_FLAGS_RING_XDP BIT(0) #define ICE_TX_FLAGS_RING_VLAN_L2TAG1 BIT(1) #define ICE_TX_FLAGS_RING_VLAN_L2TAG2 BIT(2) #define ICE_TX_FLAGS_TXTIME BIT(3) - u8 flags; + + struct xsk_buff_pool *xsk_pool; + + /* stats structs */ + struct ice_ring_stats *ring_stats; + struct ice_tx_ring *next; /* pointer to next ring in q_vector */ + + struct ice_tstamp_ring *tstamp_ring; + struct ice_ptp_tx *tx_tstamps; + __cacheline_group_end_aligned(read_mostly); + + __cacheline_group_begin_aligned(read_write); + u16 next_to_use; + u16 next_to_clean; + + u16 xdp_tx_active; + spinlock_t tx_lock; + __cacheline_group_end_aligned(read_write); + + __cacheline_group_begin_aligned(cold); + struct rcu_head rcu; /* to avoid race on free */ + DECLARE_BITMAP(xps_state, ICE_TX_NBITS); /* XPS Config State */ + struct ice_channel *ch; + + dma_addr_t dma; /* physical address of ring */ + u16 q_handle; /* Queue handle per TC */ + u16 reg_idx; /* HW register index of the ring */ u8 dcb_tc; /* Traffic class of ring */ + u16 quanta_prof_id; + u32 txq_teid; /* Added Tx queue TEID */ + __cacheline_group_end_aligned(cold); } ____cacheline_internodealigned_in_smp; static inline bool ice_ring_ch_enabled(struct ice_tx_ring *ring) diff --git a/drivers/net/ethernet/intel/ice/ice_txrx_lib.c b/drivers/net/ethernet/intel/ice/ice_txrx_lib.c index 956da38d63..e695a664e5 100644 --- a/drivers/net/ethernet/intel/ice/ice_txrx_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_txrx_lib.c @@ -20,9 +20,6 @@ void ice_release_rx_desc(struct ice_rx_ring *rx_ring, u16 val) rx_ring->next_to_use = val; - /* update next to alloc since we have filled the ring */ - rx_ring->next_to_alloc = val; - /* QRX_TAIL will be updated with any tail value, but hardware ignores * the lower 3 bits. This makes it so we only bump tail on meaningful * boundaries. Also, this allows us to bump tail on intervals of 8 up to @@ -480,7 +477,7 @@ dma_unmap: return ICE_XDP_CONSUMED; busy: - xdp_ring->ring_stats->tx_stats.tx_busy++; + ice_stats_inc(xdp_ring->ring_stats, tx_busy); return ICE_XDP_CONSUMED; } diff --git a/drivers/net/ethernet/intel/ice/ice_txrx_lib.h b/drivers/net/ethernet/intel/ice/ice_txrx_lib.h index 6a3f10f7a5..f17990b68b 100644 --- a/drivers/net/ethernet/intel/ice/ice_txrx_lib.h +++ b/drivers/net/ethernet/intel/ice/ice_txrx_lib.h @@ -38,7 +38,7 @@ ice_is_non_eop(const struct ice_rx_ring *rx_ring, if (likely(ice_test_staterr(rx_desc->wb.status_error0, ICE_RXD_EOF))) return false; - rx_ring->ring_stats->rx_stats.non_eop_descs++; + ice_stats_inc(rx_ring->ring_stats, rx_non_eop_descs); return true; } diff --git a/drivers/net/ethernet/intel/ice/ice_vf_lib.c b/drivers/net/ethernet/intel/ice/ice_vf_lib.c index fd71dd10eb..5161e032fa 100644 --- a/drivers/net/ethernet/intel/ice/ice_vf_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_vf_lib.c @@ -1217,8 +1217,8 @@ bool ice_is_vf_trusted(struct ice_vf *vf) */ bool ice_vf_has_no_qs_ena(struct ice_vf *vf) { - return (!bitmap_weight(vf->rxq_ena, ICE_MAX_RSS_QS_PER_VF) && - !bitmap_weight(vf->txq_ena, ICE_MAX_RSS_QS_PER_VF)); + return bitmap_empty(vf->rxq_ena, ICE_MAX_RSS_QS_PER_VF) && + bitmap_empty(vf->txq_ena, ICE_MAX_RSS_QS_PER_VF); } /** diff --git a/drivers/net/ethernet/intel/ice/ice_xsk.c b/drivers/net/ethernet/intel/ice/ice_xsk.c index 989ff1fd91..425d535445 100644 --- a/drivers/net/ethernet/intel/ice/ice_xsk.c +++ b/drivers/net/ethernet/intel/ice/ice_xsk.c @@ -497,7 +497,7 @@ static int ice_xmit_xdp_tx_zc(struct xdp_buff *xdp, return ICE_XDP_TX; busy: - xdp_ring->ring_stats->tx_stats.tx_busy++; + ice_stats_inc(xdp_ring->ring_stats, tx_busy); return ICE_XDP_CONSUMED; } @@ -659,7 +659,7 @@ construct_skb: xsk_buff_free(first); first = NULL; - rx_ring->ring_stats->rx_stats.alloc_buf_failed++; + ice_stats_inc(rx_ring->ring_stats, rx_buf_failed); continue; } @@ -900,6 +900,9 @@ void ice_xsk_clean_rx_ring(struct ice_rx_ring *rx_ring) u16 ntc = rx_ring->next_to_clean; u16 ntu = rx_ring->next_to_use; + if (xdp_rxq_info_is_reg(&rx_ring->xdp_rxq)) + xdp_rxq_info_unreg(&rx_ring->xdp_rxq); + while (ntc != ntu) { struct xdp_buff *xdp = *ice_xdp_buf(rx_ring, ntc); diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index 47dba8382e..b51124c40c 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -1428,14 +1428,26 @@ static void nfs4_put_copy(struct nfsd4_copy *copy) kfree(copy); } +static void release_copy_files(struct nfsd4_copy *copy); + static void nfsd4_stop_copy(struct nfsd4_copy *copy) { trace_nfsd_copy_async_cancel(copy); if (!test_and_set_bit(NFSD4_COPY_F_STOPPED, ©->cp_flags)) { kthread_stop(copy->copy_task); - copy->nfserr = nfs_ok; + if (!test_bit(NFSD4_COPY_F_CB_ERROR, ©->cp_flags)) + copy->nfserr = nfs_ok; set_bit(NFSD4_COPY_F_COMPLETED, ©->cp_flags); } + + /* + * The copy was removed from async_copies before this function + * was called, so the reaper cannot clean it up. Release files + * here regardless of who won the STOPPED race. If the thread + * set STOPPED, it has finished using the files. If STOPPED + * was set here, kthread_stop() waited for the thread to exit. + */ + release_copy_files(copy); nfs4_put_copy(copy); } @@ -1463,6 +1475,72 @@ void nfsd4_shutdown_copy(struct nfs4_client *clp) while ((copy = nfsd4_unhash_copy(clp)) != NULL) nfsd4_stop_copy(copy); } + +static bool nfsd4_copy_on_sb(const struct nfsd4_copy *copy, + const struct super_block *sb) +{ + if (copy->nf_src && + file_inode(copy->nf_src->nf_file)->i_sb == sb) + return true; + if (copy->nf_dst && + file_inode(copy->nf_dst->nf_file)->i_sb == sb) + return true; + return false; +} + +/** + * nfsd4_cancel_copy_by_sb - cancel async copy operations on @sb + * @net: net namespace containing the copy operations + * @sb: targeted superblock + */ +void nfsd4_cancel_copy_by_sb(struct net *net, struct super_block *sb) +{ + struct nfsd_net *nn = net_generic(net, nfsd_net_id); + struct nfsd4_copy *copy, *tmp; + struct nfs4_client *clp; + unsigned int idhashval; + LIST_HEAD(to_cancel); + + spin_lock(&nn->client_lock); + for (idhashval = 0; idhashval < CLIENT_HASH_SIZE; idhashval++) { + struct list_head *head = &nn->conf_id_hashtbl[idhashval]; + + list_for_each_entry(clp, head, cl_idhash) { + spin_lock(&clp->async_lock); + list_for_each_entry_safe(copy, tmp, + &clp->async_copies, copies) { + if (nfsd4_copy_on_sb(copy, sb)) { + refcount_inc(©->refcount); + /* + * Hold a reference on the client while + * nfsd4_stop_copy() runs. Unlike + * nfsd4_unhash_copy(), cp_clp is not + * NULLed here because nfsd4_send_cb_offload() + * needs a valid client to send CB_OFFLOAD. + * That function takes its own reference to + * survive callback flight. + */ + kref_get(&clp->cl_nfsdfs.cl_ref); + copy->nfserr = nfserr_admin_revoked; + set_bit(NFSD4_COPY_F_CB_ERROR, + ©->cp_flags); + list_move(©->copies, &to_cancel); + } + } + spin_unlock(&clp->async_lock); + } + } + spin_unlock(&nn->client_lock); + + list_for_each_entry_safe(copy, tmp, &to_cancel, copies) { + struct nfs4_client *clp = copy->cp_clp; + + list_del_init(©->copies); + nfsd4_stop_copy(copy); + nfsd4_put_client(clp); + } +} + #ifdef CONFIG_NFSD_V4_2_INTER_SSC extern struct file *nfs42_ssc_open(struct vfsmount *ss_mnt, @@ -1752,6 +1830,7 @@ static void nfsd4_cb_offload_release(struct nfsd4_callback *cb) container_of(cbo, struct nfsd4_copy, cp_cb_offload); set_bit(NFSD4_COPY_F_OFFLOAD_DONE, ©->cp_flags); + nfsd4_put_client(cb->cb_clp); } static int nfsd4_cb_offload_done(struct nfsd4_callback *cb, @@ -1871,10 +1950,14 @@ static void dup_copy_fields(struct nfsd4_copy *src, struct nfsd4_copy *dst) static void release_copy_files(struct nfsd4_copy *copy) { - if (copy->nf_src) + if (copy->nf_src) { nfsd_file_put(copy->nf_src); - if (copy->nf_dst) + copy->nf_src = NULL; + } + if (copy->nf_dst) { nfsd_file_put(copy->nf_dst); + copy->nf_dst = NULL; + } } static void cleanup_async_copy(struct nfsd4_copy *copy) @@ -1893,18 +1976,34 @@ static void cleanup_async_copy(struct nfsd4_copy *copy) static void nfsd4_send_cb_offload(struct nfsd4_copy *copy) { struct nfsd4_cb_offload *cbo = ©->cp_cb_offload; + struct nfs4_client *clp = copy->cp_clp; + + /* + * cp_clp is NULL when called via nfsd4_shutdown_copy() during + * client destruction. Skip the callback; the client is gone. + */ + if (!clp) { + set_bit(NFSD4_COPY_F_OFFLOAD_DONE, ©->cp_flags); + return; + } memcpy(&cbo->co_res, ©->cp_res, sizeof(copy->cp_res)); memcpy(&cbo->co_fh, ©->fh, sizeof(copy->fh)); cbo->co_nfserr = copy->nfserr; cbo->co_retries = 5; - nfsd4_init_cb(&cbo->co_cb, copy->cp_clp, &nfsd4_cb_offload_ops, + /* + * Hold a reference on the client while the callback is in flight. + * Released in nfsd4_cb_offload_release(). + */ + kref_get(&clp->cl_nfsdfs.cl_ref); + + nfsd4_init_cb(&cbo->co_cb, clp, &nfsd4_cb_offload_ops, NFSPROC4_CLNT_CB_OFFLOAD); nfsd41_cb_referring_call(&cbo->co_cb, &cbo->co_referring_sessionid, cbo->co_referring_slotid, cbo->co_referring_seqno); - trace_nfsd_cb_offload(copy->cp_clp, &cbo->co_res.cb_stateid, + trace_nfsd_cb_offload(clp, &cbo->co_res.cb_stateid, &cbo->co_fh, copy->cp_count, copy->nfserr); nfsd4_try_run_cb(&cbo->co_cb); } @@ -1919,6 +2018,7 @@ static void nfsd4_send_cb_offload(struct nfsd4_copy *copy) static int nfsd4_do_async_copy(void *data) { struct nfsd4_copy *copy = (struct nfsd4_copy *)data; + __be32 nfserr = nfs_ok; trace_nfsd_copy_async(copy); if (nfsd4_ssc_is_inter(copy)) { @@ -1929,23 +2029,25 @@ static int nfsd4_do_async_copy(void *data) if (IS_ERR(filp)) { switch (PTR_ERR(filp)) { case -EBADF: - copy->nfserr = nfserr_wrong_type; + nfserr = nfserr_wrong_type; break; default: - copy->nfserr = nfserr_offload_denied; + nfserr = nfserr_offload_denied; } /* ss_mnt will be unmounted by the laundromat */ goto do_callback; } - copy->nfserr = nfsd4_do_copy(copy, filp, copy->nf_dst->nf_file, - false); + nfserr = nfsd4_do_copy(copy, filp, copy->nf_dst->nf_file, + false); nfsd4_cleanup_inter_ssc(copy->ss_nsui, filp, copy->nf_dst); } else { - copy->nfserr = nfsd4_do_copy(copy, copy->nf_src->nf_file, - copy->nf_dst->nf_file, false); + nfserr = nfsd4_do_copy(copy, copy->nf_src->nf_file, + copy->nf_dst->nf_file, false); } do_callback: + if (!test_bit(NFSD4_COPY_F_CB_ERROR, ©->cp_flags)) + copy->nfserr = nfserr; /* The kthread exits forthwith. Ensure that a subsequent * OFFLOAD_CANCEL won't try to kill it again. */ set_bit(NFSD4_COPY_F_STOPPED, ©->cp_flags); diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index ea51def626..d1aa6a6bfb 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -1722,7 +1722,7 @@ static struct nfs4_stid *find_one_sb_stid(struct nfs4_client *clp, /** * nfsd4_revoke_states - revoke all nfsv4 states associated with given filesystem - * @net: used to identify instance of nfsd (there is one per net namespace) + * @nn: used to identify instance of nfsd (there is one per net namespace) * @sb: super_block used to identify target filesystem * * All nfs4 states (open, lock, delegation, layout) held by the server instance @@ -1734,16 +1734,15 @@ static struct nfs4_stid *find_one_sb_stid(struct nfs4_client *clp, * The clients which own the states will subsequently being notified that the * states have been "admin-revoked". */ -void nfsd4_revoke_states(struct net *net, struct super_block *sb) +void nfsd4_revoke_states(struct nfsd_net *nn, struct super_block *sb) { - struct nfsd_net *nn = net_generic(net, nfsd_net_id); unsigned int idhashval; unsigned int sc_types; sc_types = SC_TYPE_OPEN | SC_TYPE_LOCK | SC_TYPE_DELEG | SC_TYPE_LAYOUT; spin_lock(&nn->client_lock); - for (idhashval = 0; idhashval < CLIENT_HASH_MASK; idhashval++) { + for (idhashval = 0; idhashval < CLIENT_HASH_SIZE; idhashval++) { struct list_head *head = &nn->conf_id_hashtbl[idhashval]; struct nfs4_client *clp; retry: @@ -2377,7 +2376,13 @@ static void __free_client(struct kref *k) kmem_cache_free(client_slab, clp); } -static void drop_client(struct nfs4_client *clp) +/** + * nfsd4_put_client - release a reference on an nfs4_client + * @clp: the client to be released + * + * When the last reference is released, the client is freed. + */ +void nfsd4_put_client(struct nfs4_client *clp) { kref_put(&clp->cl_nfsdfs.cl_ref, __free_client); } @@ -2399,7 +2404,7 @@ free_client(struct nfs4_client *clp) clp->cl_nfsd_dentry = NULL; wake_up_all(&expiry_wq); } - drop_client(clp); + nfsd4_put_client(clp); } /* must be called under the client_lock */ @@ -2797,7 +2802,7 @@ static int client_info_show(struct seq_file *m, void *v) spin_unlock(&clp->cl_lock); seq_puts(m, "\n"); - drop_client(clp); + nfsd4_put_client(clp); return 0; } @@ -3063,7 +3068,7 @@ static int client_states_open(struct inode *inode, struct file *file) ret = seq_open(file, &states_seq_ops); if (ret) { - drop_client(clp); + nfsd4_put_client(clp); return ret; } s = file->private_data; @@ -3077,7 +3082,7 @@ static int client_opens_release(struct inode *inode, struct file *file) struct nfs4_client *clp = m->private; /* XXX: alternatively, we could get/drop in seq start/stop */ - drop_client(clp); + nfsd4_put_client(clp); return seq_release(inode, file); } @@ -3133,7 +3138,7 @@ static ssize_t client_ctl_write(struct file *file, const char __user *buf, if (!clp) return -ENXIO; force_expire_client(clp); - drop_client(clp); + nfsd4_put_client(clp); return 7; } @@ -3168,7 +3173,7 @@ nfsd4_cb_recall_any_release(struct nfsd4_callback *cb) { struct nfs4_client *clp = cb->cb_clp; - drop_client(clp); + nfsd4_put_client(clp); } static int diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c index 6d27c2b846..da2692ea85 100644 --- a/fs/nfsd/nfsctl.c +++ b/fs/nfsd/nfsctl.c @@ -259,6 +259,7 @@ static ssize_t write_unlock_fs(struct file *file, char *buf, size_t size) struct path path; char *fo_path; int error; + struct nfsd_net *nn; /* sanity check */ if (size == 0) @@ -284,8 +285,15 @@ static ssize_t write_unlock_fs(struct file *file, char *buf, size_t size) * 2. Is that directory a mount point, or * 3. Is that directory the root of an exported file system? */ + nfsd4_cancel_copy_by_sb(netns(file), path.dentry->d_sb); error = nlmsvc_unlock_all_by_sb(path.dentry->d_sb); - nfsd4_revoke_states(netns(file), path.dentry->d_sb); + mutex_lock(&nfsd_mutex); + nn = net_generic(netns(file), nfsd_net_id); + if (nn->nfsd_serv) + nfsd4_revoke_states(nn, path.dentry->d_sb); + else + error = -EINVAL; + mutex_unlock(&nfsd_mutex); path_put(&path); return error; diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h index a9dcd2fa96..c4ed96f674 100644 --- a/fs/nfsd/state.h +++ b/fs/nfsd/state.h @@ -827,6 +827,7 @@ static inline void nfsd4_try_run_cb(struct nfsd4_callback *cb) extern void nfsd4_shutdown_callback(struct nfs4_client *); extern void nfsd4_shutdown_copy(struct nfs4_client *clp); +void nfsd4_put_client(struct nfs4_client *clp); void nfsd4_async_copy_reaper(struct nfsd_net *nn); bool nfsd4_has_active_async_copies(struct nfs4_client *clp); extern struct nfs4_client_reclaim *nfs4_client_to_reclaim(struct xdr_netobj name, @@ -846,9 +847,13 @@ static inline void get_nfs4_file(struct nfs4_file *fi) struct nfsd_file *find_any_file(struct nfs4_file *f); #ifdef CONFIG_NFSD_V4 -void nfsd4_revoke_states(struct net *net, struct super_block *sb); +void nfsd4_revoke_states(struct nfsd_net *nn, struct super_block *sb); +void nfsd4_cancel_copy_by_sb(struct net *net, struct super_block *sb); #else -static inline void nfsd4_revoke_states(struct net *net, struct super_block *sb) +static inline void nfsd4_revoke_states(struct nfsd_net *nn, struct super_block *sb) +{ +} +static inline void nfsd4_cancel_copy_by_sb(struct net *net, struct super_block *sb) { } #endif diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index 1ce8e12ae3..6d57ff4efb 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h @@ -732,6 +732,7 @@ struct nfsd4_copy { #define NFSD4_COPY_F_COMMITTED (3) #define NFSD4_COPY_F_COMPLETED (4) #define NFSD4_COPY_F_OFFLOAD_DONE (5) +#define NFSD4_COPY_F_CB_ERROR (6) /* response */ __be32 nfserr; diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c index f976949d26..c84c89e878 100644 --- a/fs/notify/fsnotify.c +++ b/fs/notify/fsnotify.c @@ -414,7 +414,7 @@ static struct fsnotify_mark *fsnotify_first_mark(struct fsnotify_mark_connector return hlist_entry_safe(node, struct fsnotify_mark, obj_list); } -static struct fsnotify_mark *fsnotify_next_mark(struct fsnotify_mark *mark) +struct fsnotify_mark *fsnotify_next_mark(struct fsnotify_mark *mark) { struct hlist_node *node = NULL; diff --git a/fs/notify/mark.c b/fs/notify/mark.c index c45b222cf9..93191d9c74 100644 --- a/fs/notify/mark.c +++ b/fs/notify/mark.c @@ -440,9 +440,6 @@ EXPORT_SYMBOL_GPL(fsnotify_put_mark); */ static bool fsnotify_get_mark_safe(struct fsnotify_mark *mark) { - if (!mark) - return true; - if (refcount_inc_not_zero(&mark->refcnt)) { spin_lock(&mark->lock); if (mark->flags & FSNOTIFY_MARK_FLAG_ATTACHED) { @@ -483,15 +480,22 @@ bool fsnotify_prepare_user_wait(struct fsnotify_iter_info *iter_info) int type; fsnotify_foreach_iter_type(type) { + struct fsnotify_mark *mark = iter_info->marks[type]; + /* This can fail if mark is being removed */ - if (!fsnotify_get_mark_safe(iter_info->marks[type])) { - __release(&fsnotify_mark_srcu); - goto fail; + while (mark && !fsnotify_get_mark_safe(mark)) { + if (mark->group == iter_info->current_group) { + __release(&fsnotify_mark_srcu); + goto fail; + } + /* This is a mark in an unrelated group, skip */ + mark = fsnotify_next_mark(mark); + iter_info->marks[type] = mark; } } /* - * Now that both marks are pinned by refcount in the inode / vfsmount + * Now that all marks are pinned by refcount in the inode / vfsmount / etc * lists, we can drop SRCU lock, and safely resume the list iteration * once userspace returns. */ diff --git a/include/asm-generic/syscall.h b/include/asm-generic/syscall.h index 5a80fe728d..182b039ce5 100644 --- a/include/asm-generic/syscall.h +++ b/include/asm-generic/syscall.h @@ -5,7 +5,7 @@ * Copyright (C) 2008-2009 Red Hat, Inc. All rights reserved. * * This file is a stub providing documentation for what functions - * asm-ARCH/syscall.h files need to define. Most arch definitions + * arch/ARCH/include/asm/syscall.h files need to define. Most arch definitions * will be simple inlines. * * All of these functions expect to be called with no locks, diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h index 262b6596ec..b007d54a90 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h @@ -23,7 +23,7 @@ struct device; * * Function implementations generic to all architectures are in * lib/bitmap.c. Functions implementations that are architecture - * specific are in various include/asm-/bitops.h headers + * specific are in various arch//include/asm/bitops.h headers * and other arch/ specific files. * * See lib/bitmap.c for more details. @@ -45,6 +45,8 @@ struct device; * bitmap_copy(dst, src, nbits) *dst = *src * bitmap_and(dst, src1, src2, nbits) *dst = *src1 & *src2 * bitmap_or(dst, src1, src2, nbits) *dst = *src1 | *src2 + * bitmap_weighted_or(dst, src1, src2, nbits) *dst = *src1 | *src2. Returns Hamming Weight of dst + * bitmap_weighted_xor(dst, src1, src2, nbits) *dst = *src1 ^ *src2. Returns Hamming Weight of dst * bitmap_xor(dst, src1, src2, nbits) *dst = *src1 ^ *src2 * bitmap_andnot(dst, src1, src2, nbits) *dst = *src1 & ~(*src2) * bitmap_complement(dst, src, nbits) *dst = ~(*src) @@ -56,6 +58,7 @@ struct device; * bitmap_weight(src, nbits) Hamming Weight: number set bits * bitmap_weight_and(src1, src2, nbits) Hamming Weight of and'ed bitmap * bitmap_weight_andnot(src1, src2, nbits) Hamming Weight of andnot'ed bitmap + * bitmap_weight_from(src, start, end) Hamming Weight starting from @start * bitmap_set(dst, pos, nbits) Set specified bit area * bitmap_clear(dst, pos, nbits) Clear specified bit area * bitmap_find_next_zero_area(buf, len, pos, n, mask) Find bit free area @@ -165,6 +168,10 @@ bool __bitmap_and(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int nbits); void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int nbits); +unsigned int __bitmap_weighted_or(unsigned long *dst, const unsigned long *bitmap1, + const unsigned long *bitmap2, unsigned int nbits); +unsigned int __bitmap_weighted_xor(unsigned long *dst, const unsigned long *bitmap1, + const unsigned long *bitmap2, unsigned int nbits); void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int nbits); bool __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1, @@ -337,6 +344,30 @@ void bitmap_or(unsigned long *dst, const unsigned long *src1, __bitmap_or(dst, src1, src2, nbits); } +static __always_inline +unsigned int bitmap_weighted_or(unsigned long *dst, const unsigned long *src1, + const unsigned long *src2, unsigned int nbits) +{ + if (small_const_nbits(nbits)) { + *dst = *src1 | *src2; + return hweight_long(*dst & BITMAP_LAST_WORD_MASK(nbits)); + } else { + return __bitmap_weighted_or(dst, src1, src2, nbits); + } +} + +static __always_inline +unsigned int bitmap_weighted_xor(unsigned long *dst, const unsigned long *src1, + const unsigned long *src2, unsigned int nbits) +{ + if (small_const_nbits(nbits)) { + *dst = *src1 ^ *src2; + return hweight_long(*dst & BITMAP_LAST_WORD_MASK(nbits)); + } else { + return __bitmap_weighted_xor(dst, src1, src2, nbits); + } +} + static __always_inline void bitmap_xor(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, unsigned int nbits) @@ -464,6 +495,38 @@ unsigned long bitmap_weight_andnot(const unsigned long *src1, return __bitmap_weight_andnot(src1, src2, nbits); } +/** + * bitmap_weight_from - Hamming weight for a memory region + * @bitmap: The base address + * @start: The bitnumber to starts weighting + * @end: the bitmap size in bits + * + * Returns the number of set bits in the region. If @start >= @end, + * return >= end. + */ +static __always_inline +unsigned long bitmap_weight_from(const unsigned long *bitmap, + unsigned int start, unsigned int end) +{ + unsigned long w; + + if (unlikely(start >= end)) + return end; + + if (small_const_nbits(end)) + return hweight_long(*bitmap & GENMASK(end - 1, start)); + + bitmap += start / BITS_PER_LONG; + /* Opencode round_down() to not include math.h */ + end -= start & ~(BITS_PER_LONG - 1); + start %= BITS_PER_LONG; + w = bitmap_weight(bitmap, end); + if (start) + w -= hweight_long(*bitmap & BITMAP_LAST_WORD_MASK(start)); + + return w; +} + static __always_inline void bitmap_set(unsigned long *map, unsigned int start, unsigned int nbits) { @@ -560,9 +623,9 @@ void bitmap_replace(unsigned long *dst, * ...0..11...0..10 * dst: 0000001100000010 * - * A relationship exists between bitmap_scatter() and bitmap_gather(). + * A relationship exists between bitmap_scatter() and bitmap_gather(). See + * bitmap_gather() for the bitmap gather detailed operations. TL;DR: * bitmap_gather() can be seen as the 'reverse' bitmap_scatter() operation. - * See bitmap_scatter() for details related to this relationship. */ static __always_inline void bitmap_scatter(unsigned long *dst, const unsigned long *src, @@ -608,7 +671,9 @@ void bitmap_scatter(unsigned long *dst, const unsigned long *src, * dst: 0000000000011010 * * A relationship exists between bitmap_gather() and bitmap_scatter(). See - * bitmap_scatter() for the bitmap scatter detailed operations. + * bitmap_scatter() for the bitmap scatter detailed operations. TL;DR: + * bitmap_scatter() can be seen as the 'reverse' bitmap_gather() operation. + * * Suppose scattered computed using bitmap_scatter(scattered, src, mask, n). * The operation bitmap_gather(result, scattered, mask, n) leads to a result * equal or equivalent to src. diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index a5f028a000..aa2a0d7f3d 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -720,6 +720,22 @@ void cpumask_or(struct cpumask *dstp, const struct cpumask *src1p, cpumask_bits(src2p), small_cpumask_bits); } +/** + * cpumask_weighted_or - *dstp = *src1p | *src2p and return the weight of the result + * @dstp: the cpumask result + * @src1p: the first input + * @src2p: the second input + * + * Return: The number of bits set in the resulting cpumask @dstp + */ +static __always_inline +unsigned int cpumask_weighted_or(struct cpumask *dstp, const struct cpumask *src1p, + const struct cpumask *src2p) +{ + return bitmap_weighted_or(cpumask_bits(dstp), cpumask_bits(src1p), + cpumask_bits(src2p), small_cpumask_bits); +} + /** * cpumask_xor - *dstp = *src1p ^ *src2p * @dstp: the cpumask result diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h index 43e541304e..089b03b905 100644 --- a/include/linux/fsnotify_backend.h +++ b/include/linux/fsnotify_backend.h @@ -849,6 +849,7 @@ static inline void fsnotify_clear_sb_marks_by_group(struct fsnotify_group *group } extern void fsnotify_get_mark(struct fsnotify_mark *mark); extern void fsnotify_put_mark(struct fsnotify_mark *mark); +struct fsnotify_mark *fsnotify_next_mark(struct fsnotify_mark *mark); extern void fsnotify_finish_user_wait(struct fsnotify_iter_info *iter_info); extern bool fsnotify_prepare_user_wait(struct fsnotify_iter_info *iter_info); diff --git a/include/linux/types.h b/include/linux/types.h index e086e51ed6..93427972af 100644 --- a/include/linux/types.h +++ b/include/linux/types.h @@ -43,7 +43,7 @@ typedef unsigned long uintptr_t; typedef long intptr_t; #ifdef CONFIG_HAVE_UID16 -/* This is defined by include/asm-{arch}/posix_types.h */ +/* This is defined by arch/{arch}/include/asm/posix_types.h */ typedef __kernel_old_uid_t old_uid_t; typedef __kernel_old_gid_t old_gid_t; #endif /* CONFIG_UID16 */ diff --git a/kernel.sbat b/kernel.sbat index 4918e5e793..50544aefea 100644 --- a/kernel.sbat +++ b/kernel.sbat @@ -1,2 +1,2 @@ sbat,1,SBAT Version,sbat,1,https://github.com/rhboot/shim/blob/main/SBAT.md -kernel.almalinux,1,AlmaLinux,kernel-core,6.12.0-211.34.1.el10.x86_64,mailto:security@almalinux.org +kernel.almalinux,1,AlmaLinux,kernel-core,6.12.0-211.37.1.el10.x86_64,mailto:security@almalinux.org diff --git a/lib/bitmap.c b/lib/bitmap.c index b976928549..b9bfa157e0 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c @@ -69,6 +69,7 @@ bool __bitmap_or_equal(const unsigned long *bitmap1, tmp = (bitmap1[k] | bitmap2[k]) ^ bitmap3[k]; return (tmp & BITMAP_LAST_WORD_MASK(bits)) == 0; } +EXPORT_SYMBOL(__bitmap_or_equal); void __bitmap_complement(unsigned long *dst, const unsigned long *src, unsigned int bits) { @@ -355,6 +356,20 @@ unsigned int __bitmap_weight_andnot(const unsigned long *bitmap1, } EXPORT_SYMBOL(__bitmap_weight_andnot); +unsigned int __bitmap_weighted_or(unsigned long *dst, const unsigned long *bitmap1, + const unsigned long *bitmap2, unsigned int bits) +{ + return BITMAP_WEIGHT(({dst[idx] = bitmap1[idx] | bitmap2[idx]; dst[idx]; }), bits); +} +EXPORT_SYMBOL(__bitmap_weighted_or); + +unsigned int __bitmap_weighted_xor(unsigned long *dst, const unsigned long *bitmap1, + const unsigned long *bitmap2, unsigned int bits) +{ + return BITMAP_WEIGHT(({dst[idx] = bitmap1[idx] ^ bitmap2[idx]; dst[idx]; }), bits); +} +EXPORT_SYMBOL(__bitmap_weighted_xor); + void __bitmap_set(unsigned long *map, unsigned int start, int len) { unsigned long *p = map + BIT_WORD(start); diff --git a/lib/flex_proportions.c b/lib/flex_proportions.c index 84ecccddc7..012d5614ef 100644 --- a/lib/flex_proportions.c +++ b/lib/flex_proportions.c @@ -64,13 +64,14 @@ void fprop_global_destroy(struct fprop_global *p) bool fprop_new_period(struct fprop_global *p, int periods) { s64 events = percpu_counter_sum(&p->events); + unsigned long flags; /* * Don't do anything if there are no events. */ if (events <= 1) return false; - preempt_disable_nested(); + local_irq_save(flags); write_seqcount_begin(&p->sequence); if (periods < 64) events -= events >> periods; @@ -78,7 +79,7 @@ bool fprop_new_period(struct fprop_global *p, int periods) percpu_counter_add(&p->events, -events); p->period += periods; write_seqcount_end(&p->sequence); - preempt_enable_nested(); + local_irq_restore(flags); return true; } diff --git a/lib/test_bitmap.c b/lib/test_bitmap.c index 65a75d58ed..69813c10e6 100644 --- a/lib/test_bitmap.c +++ b/lib/test_bitmap.c @@ -100,34 +100,6 @@ __check_eq_pbl(const char *srcfile, unsigned int line, return true; } -static bool __init -__check_eq_u32_array(const char *srcfile, unsigned int line, - const u32 *exp_arr, unsigned int exp_len, - const u32 *arr, unsigned int len) __used; -static bool __init -__check_eq_u32_array(const char *srcfile, unsigned int line, - const u32 *exp_arr, unsigned int exp_len, - const u32 *arr, unsigned int len) -{ - if (exp_len != len) { - pr_warn("[%s:%u] array length differ: expected %u, got %u\n", - srcfile, line, - exp_len, len); - return false; - } - - if (memcmp(exp_arr, arr, len*sizeof(*arr))) { - pr_warn("[%s:%u] array contents differ\n", srcfile, line); - print_hex_dump(KERN_WARNING, " exp: ", DUMP_PREFIX_OFFSET, - 32, 4, exp_arr, exp_len*sizeof(*exp_arr), false); - print_hex_dump(KERN_WARNING, " got: ", DUMP_PREFIX_OFFSET, - 32, 4, arr, len*sizeof(*arr), false); - return false; - } - - return true; -} - static bool __init __check_eq_clump8(const char *srcfile, unsigned int line, const unsigned int offset, const unsigned int size, @@ -382,18 +354,22 @@ static void __init test_replace(void) static const unsigned long sg_mask[] __initconst = { BITMAP_FROM_U64(0x000000000000035aULL), + BITMAP_FROM_U64(0x0000000000000000ULL), }; static const unsigned long sg_src[] __initconst = { BITMAP_FROM_U64(0x0000000000000667ULL), + BITMAP_FROM_U64(0x0000000000000000ULL), }; static const unsigned long sg_gather_exp[] __initconst = { BITMAP_FROM_U64(0x0000000000000029ULL), + BITMAP_FROM_U64(0x0000000000000000ULL), }; static const unsigned long sg_scatter_exp[] __initconst = { BITMAP_FROM_U64(0x000000000000021aULL), + BITMAP_FROM_U64(0x0000000000000000ULL), }; static void __init test_bitmap_sg(void) @@ -407,18 +383,18 @@ static void __init test_bitmap_sg(void) /* Simple gather call */ bitmap_zero(bmap_gather, 100); bitmap_gather(bmap_gather, sg_src, sg_mask, nbits); - expect_eq_bitmap(sg_gather_exp, bmap_gather, nbits); + expect_eq_bitmap(sg_gather_exp, bmap_gather, 100); /* Simple scatter call */ bitmap_zero(bmap_scatter, 100); bitmap_scatter(bmap_scatter, sg_src, sg_mask, nbits); - expect_eq_bitmap(sg_scatter_exp, bmap_scatter, nbits); + expect_eq_bitmap(sg_scatter_exp, bmap_scatter, 100); /* Scatter/gather relationship */ bitmap_zero(bmap_tmp, 100); bitmap_gather(bmap_tmp, bmap_scatter, sg_mask, nbits); bitmap_scatter(bmap_res, bmap_tmp, sg_mask, nbits); - expect_eq_bitmap(bmap_scatter, bmap_res, nbits); + expect_eq_bitmap(bmap_scatter, bmap_res, 100); } #define PARSE_TIME 0x1 @@ -548,8 +524,7 @@ static void __init test_bitmap_parselist(void) } if (ptest.flags & PARSE_TIME) - pr_info("parselist: %d: input is '%s' OK, Time: %llu\n", - i, ptest.in, time); + pr_info("parselist('%s'):\t%llu\n", ptest.in, time); #undef ptest } @@ -572,22 +547,22 @@ static void __init test_bitmap_printlist(void) goto out; time = ktime_get(); - ret = bitmap_print_to_pagebuf(true, buf, bmap, PAGE_SIZE * 8); + ret = scnprintf(buf, PAGE_SIZE, "%*pbl", (int)PAGE_SIZE * 8, bmap); time = ktime_get() - time; - if (ret != slen + 1) { - pr_err("bitmap_print_to_pagebuf: result is %d, expected %d\n", ret, slen); + if (ret != slen) { + pr_err("scnprintf(\"%%*pbl\"): result is %d, expected %d\n", ret, slen); failed_tests++; goto out; } if (strncmp(buf, expected, slen)) { - pr_err("bitmap_print_to_pagebuf: result is %s, expected %s\n", buf, expected); + pr_err("scnprintf(\"%%*pbl\"): result is %s, expected %s\n", buf, expected); failed_tests++; goto out; } - pr_info("bitmap_print_to_pagebuf: input is '%s', Time: %llu\n", buf, time); + pr_info("scnprintf(\"%%*pbl\", '%s'):\t%llu\n", buf, time); out: kfree(buf); kfree(bmap); @@ -678,7 +653,7 @@ static void __init test_bitmap_arr32(void) memset(arr, 0xa5, sizeof(arr)); - for (nbits = 0; nbits < EXP1_IN_BITS; ++nbits) { + for (nbits = 1; nbits < EXP1_IN_BITS; ++nbits) { bitmap_to_arr32(arr, exp1, nbits); bitmap_from_arr32(bmap2, arr, nbits); expect_eq_bitmap(bmap2, exp1, nbits); @@ -706,7 +681,7 @@ static void __init test_bitmap_arr64(void) memset(arr, 0xa5, sizeof(arr)); - for (nbits = 0; nbits < EXP1_IN_BITS; ++nbits) { + for (nbits = 1; nbits < EXP1_IN_BITS; ++nbits) { memset(bmap2, 0xff, sizeof(arr)); bitmap_to_arr64(arr, exp1, nbits); bitmap_from_arr64(bmap2, arr, nbits); @@ -739,7 +714,7 @@ static void noinline __init test_mem_optimisations(void) unsigned int start, nbits; for (start = 0; start < 1024; start += 8) { - for (nbits = 0; nbits < 1024 - start; nbits += 8) { + for (nbits = 1; nbits < 1024 - start; nbits += 8) { memset(bmap1, 0x5a, sizeof(bmap1)); memset(bmap2, 0x5a, sizeof(bmap2)); @@ -879,6 +854,50 @@ static void __init test_for_each_set_bit_from(void) } } +static void __init test_bitmap_weight(void) +{ + unsigned int bit, w1, w2, w; + DECLARE_BITMAP(b, 30); + DECLARE_BITMAP(b1, 128); + + bitmap_parselist("all:1/2", b, 30); + + /* Test inline implementation */ + w = bitmap_weight(b, 30); + w1 = bitmap_weight(b, 15); + w2 = bitmap_weight_from(b, 15, 30); + + expect_eq_uint(15, w); + expect_eq_uint(8, w1); + expect_eq_uint(7, w2); + + /* Test outline implementation */ + w = bitmap_weight(exp1, EXP1_IN_BITS); + for (bit = 1; bit < EXP1_IN_BITS; bit++) { + w1 = bitmap_weight(exp1, bit); + w2 = bitmap_weight_from(exp1, bit, EXP1_IN_BITS); + expect_eq_uint(w1 + w2, w); + } + + /* Test out-of-range */ + w = bitmap_weight_from(b, 31, 30); + expect_eq_uint(0, !!(w < 30)); + + /* + * Test bitmap_weight() for correctness in case of some bits set between + * nbits and end of the last word. + */ + bitmap_fill(b1, 128); + + /* Inline */ + expect_eq_uint(30, bitmap_weight(b1, 30)); + expect_eq_uint(100, bitmap_weight(b1, 100)); + + /* Outline */ + for (int i = 1; i < 128; i++) + expect_eq_uint(i, bitmap_weight(b1, i)); +} + static void __init test_for_each_clear_bit(void) { DECLARE_BITMAP(orig, 500); @@ -1423,7 +1442,7 @@ static void __init test_bitmap_read_perf(void) } } time = ktime_get() - time; - pr_info("Time spent in %s:\t%llu\n", __func__, time); + pr_info("%s:\t\t%llu\n", __func__, time); } static void __init test_bitmap_write_perf(void) @@ -1445,7 +1464,63 @@ static void __init test_bitmap_write_perf(void) } } time = ktime_get() - time; - pr_info("Time spent in %s:\t%llu\n", __func__, time); + pr_info("%s:\t\t%llu\n", __func__, time); +} + +/* + * nbits == 0 is most commonly not a valid case. Bitmap users should revisit + * the caller logic. Bitmap API doesn't provide any guarantees on returned + * value. The pointers are not dereferenced. The return value is intentionally + * ignored. + */ +static void __init test_zero_nbits(void) +{ + static volatile __always_used unsigned long ret __initdata; + + bitmap_clear(NULL, 0, 0); + bitmap_complement(NULL, NULL, 0); + bitmap_copy(NULL, NULL, 0); + bitmap_copy_clear_tail(NULL, NULL, 0); + bitmap_fill(NULL, 0); + bitmap_from_arr32(NULL, NULL, 0); + bitmap_from_arr64(NULL, NULL, 0); + bitmap_or(NULL, NULL, NULL, 0); + bitmap_set(NULL, 0, 0); + bitmap_shift_left(NULL, NULL, 0, 0); + bitmap_shift_right(NULL, NULL, 0, 0); + bitmap_to_arr32(NULL, NULL, 0); + bitmap_to_arr64(NULL, NULL, 0); + bitmap_write(NULL, 0, 0, 0); + bitmap_xor(NULL, NULL, NULL, 0); + bitmap_zero(NULL, 0); + + ret = bitmap_and(NULL, NULL, NULL, 0); + ret = bitmap_empty(NULL, 0); + ret = bitmap_equal(NULL, NULL, 0); + ret = bitmap_full(NULL, 0); + ret = bitmap_or_equal(NULL, NULL, NULL, 0); + ret = bitmap_read(NULL, 0, 0); + ret = bitmap_subset(NULL, NULL, 0); + ret = bitmap_weight(NULL, 0); + ret = bitmap_weight_and(NULL, NULL, 0); + ret = bitmap_weight_andnot(NULL, NULL, 0); + ret = bitmap_weight_from(NULL, 0, 0); + ret = bitmap_weighted_or(NULL, NULL, NULL, 0); + + ret = find_first_and_and_bit(NULL, NULL, NULL, 0); + ret = find_first_and_bit(NULL, NULL, 0); + ret = find_first_andnot_bit(NULL, NULL, 0); + ret = find_first_bit(NULL, 0); + ret = find_first_zero_bit(NULL, 0); + ret = find_last_bit(NULL, 0); + ret = find_next_and_bit(NULL, NULL, 0, 0); + ret = find_next_andnot_bit(NULL, NULL, 0, 0); + ret = find_next_bit(NULL, 0, 0); + ret = find_next_clump8(NULL, NULL, 0, 0); + ret = find_next_zero_bit(NULL, 0, 0); + ret = find_nth_and_bit(NULL, NULL, 0, 0); + ret = find_nth_bit(NULL, 0, 0); + ret = find_random_bit(NULL, 0); } #undef TEST_BIT_LEN @@ -1469,7 +1544,9 @@ static void __init selftest(void) test_bitmap_const_eval(); test_bitmap_read_write(); test_bitmap_read_perf(); + test_bitmap_weight(); test_bitmap_write_perf(); + test_zero_nbits(); test_find_nth_bit(); test_for_each_set_bit(); diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 07b493331f..097b7c76fc 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -5380,7 +5380,13 @@ static inline int l2cap_ecred_reconf_rsp(struct l2cap_conn *conn, if (chan->ident != cmd->ident) continue; + l2cap_chan_hold(chan); + l2cap_chan_lock(chan); + l2cap_chan_del(chan, ECONNRESET); + + l2cap_chan_unlock(chan); + l2cap_chan_put(chan); } return 0; diff --git a/net/can/bcm.c b/net/can/bcm.c index 01286e6a6a..ff49f57ae0 100644 --- a/net/can/bcm.c +++ b/net/can/bcm.c @@ -56,6 +56,7 @@ #include #include #include +#include #include #include #include @@ -90,6 +91,8 @@ MODULE_ALIAS("can-proto-2"); #define BCM_MIN_NAMELEN CAN_REQUIRED_SIZE(struct sockaddr_can, can_ifindex) +static struct workqueue_struct *bcm_wq; + /* * easy access to the first 64 bit of can(fd)_frame payload. cp->data is * 64 bit aligned so the offset has to be multiples of 8 which is ensured @@ -103,6 +106,7 @@ static inline u64 get_u64(const struct canfd_frame *cp, int offset) struct bcm_op { struct list_head list; struct rcu_head rcu; + struct work_struct work; int ifindex; canid_t can_id; u32 flags; @@ -768,9 +772,12 @@ static struct bcm_op *bcm_find_op(struct list_head *ops, return NULL; } -static void bcm_free_op_rcu(struct rcu_head *rcu_head) +static void bcm_free_op_work(struct work_struct *work) { - struct bcm_op *op = container_of(rcu_head, struct bcm_op, rcu); + struct bcm_op *op = container_of(work, struct bcm_op, work); + + hrtimer_cancel(&op->timer); + hrtimer_cancel(&op->thrtimer); if ((op->frames) && (op->frames != &op->sframe)) kfree(op->frames); @@ -778,9 +785,23 @@ static void bcm_free_op_rcu(struct rcu_head *rcu_head) if ((op->last_frames) && (op->last_frames != &op->last_sframe)) kfree(op->last_frames); + /* the last possible access to op->timer/op->thrtimer has now + * happened above via hrtimer_cancel() - op->sk is no longer + * needed by any pending timer callback, so drop our reference + */ + sock_put(op->sk); + kfree(op); } +static void bcm_free_op_rcu(struct rcu_head *rcu_head) +{ + struct bcm_op *op = container_of(rcu_head, struct bcm_op, rcu); + + INIT_WORK(&op->work, bcm_free_op_work); + queue_work(bcm_wq, &op->work); +} + static void bcm_remove_op(struct bcm_op *op) { hrtimer_cancel(&op->timer); @@ -1009,6 +1030,7 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, /* bcm_can_tx / bcm_tx_timeout_handler needs this */ op->sk = sk; + sock_hold(sk); op->ifindex = ifindex; /* initialize uninitialized (kzalloc) structure */ @@ -1186,6 +1208,7 @@ static int bcm_rx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, /* bcm_can_tx / bcm_tx_timeout_handler needs this */ op->sk = sk; + sock_hold(sk); op->ifindex = ifindex; /* ifindex for timeout events w/o previous frame reception */ @@ -1799,11 +1822,15 @@ static int __init bcm_module_init(void) { int err; + bcm_wq = alloc_workqueue("can-bcm-wq", WQ_UNBOUND, 0); + if (!bcm_wq) + return -ENOMEM; + pr_info("can: broadcast manager protocol\n"); err = register_pernet_subsys(&canbcm_pernet_ops); if (err) - return err; + goto register_pernet_failed; err = register_netdevice_notifier(&canbcm_notifier); if (err) @@ -1821,6 +1848,8 @@ register_proto_failed: unregister_netdevice_notifier(&canbcm_notifier); register_notifier_failed: unregister_pernet_subsys(&canbcm_pernet_ops); +register_pernet_failed: + destroy_workqueue(bcm_wq); return err; } @@ -1829,6 +1858,8 @@ static void __exit bcm_module_exit(void) can_proto_unregister(&bcm_can_proto); unregister_netdevice_notifier(&canbcm_notifier); unregister_pernet_subsys(&canbcm_pernet_ops); + rcu_barrier(); + destroy_workqueue(bcm_wq); } module_init(bcm_module_init); diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index bbe17141f8..0712f2aa35 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -751,12 +751,12 @@ int __xfrm_state_delete(struct xfrm_state *x) x->km.state = XFRM_STATE_DEAD; spin_lock(&net->xfrm.xfrm_state_lock); list_del(&x->km.all); - hlist_del_rcu(&x->bydst); - hlist_del_rcu(&x->bysrc); - if (x->km.seq) - hlist_del_rcu(&x->byseq); - if (x->id.spi) - hlist_del_rcu(&x->byspi); + hlist_del_init_rcu(&x->bydst); + hlist_del_init_rcu(&x->bysrc); + if (!hlist_unhashed(&x->byseq)) + hlist_del_init_rcu(&x->byseq); + if (!hlist_unhashed(&x->byspi)) + hlist_del_init_rcu(&x->byspi); net->xfrm.state_num--; xfrm_nat_keepalive_state_updated(x); spin_unlock(&net->xfrm.xfrm_state_lock); diff --git a/redhat/Makefile.automotive b/redhat/Makefile.automotive index 6ea9100173..f1b28bd3b1 100644 --- a/redhat/Makefile.automotive +++ b/redhat/Makefile.automotive @@ -18,4 +18,4 @@ INCLUDE_AUTOMOTIVE_FILES ?= 0 # use the following to define packaging variables. When creating a new # automotive kernel, set the package name and the disttag here. AUTOMOTIVE_PKG_NAME ?= kernel-automotive -AUTOMOTIVE_PKG_DIST ?= .el$(RHEL_MAJOR)iv +AUTOMOTIVE_PKG_DIST ?= .el10_2iv diff --git a/redhat/configs/common/generic/CONFIG_PT_RECLAIM b/redhat/configs/common/generic/CONFIG_PT_RECLAIM index 6001712739..28aa4c7dfb 100644 --- a/redhat/configs/common/generic/CONFIG_PT_RECLAIM +++ b/redhat/configs/common/generic/CONFIG_PT_RECLAIM @@ -1 +1 @@ -CONFIG_PT_RECLAIM=y +# CONFIG_PT_RECLAIM is not set diff --git a/redhat/configs/common/generic/arm/aarch64/CONFIG_ARM64_ERRATUM_4118414 b/redhat/configs/common/generic/arm/aarch64/CONFIG_ARM64_ERRATUM_4118414 new file mode 100644 index 0000000000..1c03dd363e --- /dev/null +++ b/redhat/configs/common/generic/arm/aarch64/CONFIG_ARM64_ERRATUM_4118414 @@ -0,0 +1 @@ +CONFIG_ARM64_ERRATUM_4118414=y diff --git a/redhat/configs/rhel/automotive/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV b/redhat/configs/rhel/automotive/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV new file mode 100644 index 0000000000..9002114dfe --- /dev/null +++ b/redhat/configs/rhel/automotive/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV @@ -0,0 +1 @@ +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set diff --git a/redhat/configs/rhel/generic/x86/CONFIG_SOFT_WATCHDOG_PRETIMEOUT b/redhat/configs/rhel/generic/x86/CONFIG_SOFT_WATCHDOG_PRETIMEOUT new file mode 100644 index 0000000000..d70ffa0103 --- /dev/null +++ b/redhat/configs/rhel/generic/x86/CONFIG_SOFT_WATCHDOG_PRETIMEOUT @@ -0,0 +1 @@ +# CONFIG_SOFT_WATCHDOG_PRETIMEOUT is not set diff --git a/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT new file mode 100644 index 0000000000..2872790374 --- /dev/null +++ b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT @@ -0,0 +1 @@ +CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT=y diff --git a/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP new file mode 100644 index 0000000000..e017e8fdbc --- /dev/null +++ b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP @@ -0,0 +1 @@ +# CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP is not set diff --git a/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC new file mode 100644 index 0000000000..7ca335b94e --- /dev/null +++ b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC @@ -0,0 +1 @@ +CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC=y diff --git a/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV new file mode 100644 index 0000000000..d7d095b471 --- /dev/null +++ b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV @@ -0,0 +1 @@ +CONFIG_WATCHDOG_PRETIMEOUT_GOV=y diff --git a/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP new file mode 100644 index 0000000000..855f90b7be --- /dev/null +++ b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP @@ -0,0 +1 @@ +# CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP is not set diff --git a/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC new file mode 100644 index 0000000000..42dc93a56d --- /dev/null +++ b/redhat/configs/rhel/generic/x86/CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC @@ -0,0 +1 @@ +CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=y diff --git a/redhat/kernel.changelog-10.2 b/redhat/kernel.changelog-10.2 index 0a3c141e35..7730a4a61e 100644 --- a/redhat/kernel.changelog-10.2 +++ b/redhat/kernel.changelog-10.2 @@ -1,3 +1,504 @@ +* Tue Jul 21 2026 CKI KWF Bot [6.12.0-211.37.1.el10_2] +- can: bcm: defer rx_op deallocation to workqueue to fix thrtimer UAF (CKI Backport Bot) [RHEL-212681] +- fanotify: fix false positive on permission events (CKI Backport Bot) [RHEL-180076] {CVE-2026-46150} +Resolves: RHEL-180076, RHEL-212681 + +* Mon Jul 20 2026 CKI KWF Bot [6.12.0-211.36.1.el10_2] +- ice: fix double-free of tx_buf skb (Jakub Ramaseuski) [RHEL-191324 RHEL-192200] {CVE-2026-53009} +- ice: fix double free in ice_sf_eth_activate() error path (Jakub Ramaseuski) [RHEL-191324] {CVE-2026-46162} +- ice: update PCS latency settings for E825 10G/25Gb modes (Jakub Ramaseuski) [RHEL-191324] +- ice: fix 'adjust' timer programming for E830 devices (Jakub Ramaseuski) [RHEL-191324] +- ice: use bitmap_empty() in ice_vf_has_no_qs_ena (Jakub Ramaseuski) [RHEL-191324] +- ice: use bitmap_weighted_xor() in ice_find_free_recp_res_idx() (Jakub Ramaseuski) [RHEL-191324] +- ice: Make name member of struct ice_cgu_pin_desc const (Jakub Ramaseuski) [RHEL-191324] +- ice: fix PTP timestamping broken by SyncE code on E825C (Jakub Ramaseuski) [RHEL-191324] +- ice: ptp: don't WARN when controlling PF is unavailable (Jakub Ramaseuski) [RHEL-191324] {CVE-2026-43346} +- ice: use ice_update_eth_stats() for representor stats (Jakub Ramaseuski) [RHEL-191324] +- ice: fix inverted ready check for VF representors (Jakub Ramaseuski) [RHEL-191324] +- drivers: net: ice: fix devlink parameters get without irdma (Jakub Ramaseuski) [RHEL-191324] +- ice: fix rxq info registering in mbuf packets (Jakub Ramaseuski) [RHEL-191324] +- ice: fix retry for AQ command 0x06EE (Jakub Ramaseuski) [RHEL-191324] +- ice: reintroduce retry mechanism for indirect AQ (Jakub Ramaseuski) [RHEL-191324] +- ice: fix adding AQ LLDP filter for VF (Jakub Ramaseuski) [RHEL-191324] +- ice: recap the VSI and QoS info after rebuild (Jakub Ramaseuski) [RHEL-191324] +- ice: fix missing TX timestamps interrupts on E825 devices (Jakub Ramaseuski) [RHEL-191324] +- ice: stop counting UDP csum mismatch as rx_errors (Jakub Ramaseuski) [RHEL-191324] +- ice: reshuffle and group Rx and Tx queue fields by cachelines (Jakub Ramaseuski) [RHEL-191324] +- ice: convert all ring stats to u64_stats_t (Jakub Ramaseuski) [RHEL-191324] +- ice: shorten ring stat names and add accessors (Jakub Ramaseuski) [RHEL-191324] +- ice: use u64_stats API to access pkts/bytes in dim sample (Jakub Ramaseuski) [RHEL-191324] +- ice: remove ice_q_stats struct and use struct_group (Jakub Ramaseuski) [RHEL-191324] +- ice: pass pointer to ice_fetch_u64_stats_per_ring (Jakub Ramaseuski) [RHEL-191324] +- ice: unify PHY FW loading status handler for E800 devices (Jakub Ramaseuski) [RHEL-191324] +- ice: Fix NULL pointer dereference in ice_vsi_set_napi_queues (Jakub Ramaseuski) [RHEL-191324] {CVE-2026-23166} +- bitmap: introduce bitmap_weighted_xor() (Jakub Ramaseuski) [RHEL-191324] +- bitmap: add test_zero_nbits() (Jakub Ramaseuski) [RHEL-191324] +- bitmap: exclude nbits == 0 cases from bitmap test (Jakub Ramaseuski) [RHEL-191324] +- bitmap: test bitmap_weight() for more (Jakub Ramaseuski) [RHEL-191324] +- bitmap: add bitmap_weight_from() (Jakub Ramaseuski) [RHEL-191324] +- bitmap: align test_bitmap output (Jakub Ramaseuski) [RHEL-191324] +- bitmap: switch test to scnprintf("%%*pbl") (Jakub Ramaseuski) [RHEL-191324] +- bitmap: Add test for out-of-boundary modifications for scatter & gather (Jakub Ramaseuski) [RHEL-191324] +- cpumask: Introduce cpumask_weighted_or() (Jakub Ramaseuski) [RHEL-191324] +- bitmap: Align documentation between bitmap_gather() and bitmap_scatter() (Jakub Ramaseuski) [RHEL-191324] +- bitmap: remove _check_eq_u32_array (Jakub Ramaseuski) [RHEL-191324] +- include: update references to include/asm- (Jakub Ramaseuski) [RHEL-191324] +- KEYS: trusted: Fix a memory leak in tpm2_load_cmd (CKI Backport Bot) [RHEL-189604] {CVE-2025-71147} +- crypto: af_alg - zero initialize memory allocated via sock_kmalloc (CKI Backport Bot) [RHEL-189576] {CVE-2025-71113} +- drm/xe: Fix error cleanup in xe_exec_queue_create_ioctl() (CKI Backport Bot) [RHEL-188644] {CVE-2026-52976} +- xfrm: defensively unhash xfrm_state lists in __xfrm_state_delete (Sabrina Dubroca) [RHEL-180167] {CVE-2026-46116} +Resolves: RHEL-180167, RHEL-188644, RHEL-189576, RHEL-189604, RHEL-191324, RHEL-192200 + +* Thu Jul 16 2026 CKI KWF Bot [6.12.0-211.35.1.el10_2] +- drm/xe/dma-buf: fix UAF with retry loop (Karol Herbst) [RHEL-192232] {CVE-2026-52950} +- drm/xe/dma-buf: handle empty bo and UAF races (Karol Herbst) [RHEL-192232] +- drm/xe: Fix bo leak in xe_dma_buf_init_obj() on allocation failure (Karol Herbst) [RHEL-192232] +- drm/xe: Fix dma-buf attachment leak in xe_gem_prime_import() (Karol Herbst) [RHEL-192232] +- nfsd: cancel async COPY operations when admin revokes filesystem state (Olga Kornievskaia) [RHEL-173103] +- nfsd: use correct loop termination in nfsd4_revoke_states() (Olga Kornievskaia) [RHEL-173103] +- nfsd: check that server is running in unlock_filesystem (Olga Kornievskaia) [RHEL-173103] +- drm/gem: Try to fix change_handle ioctl, attempt 4 (Jocelyn Falempe) [RHEL-179887] +- drm/gem: fix race between change_handle and handle_delete (Jocelyn Falempe) [RHEL-179887] +- drm: Replace old pointer to new idr (Jocelyn Falempe) [RHEL-179887] +- drm: Set old handle to NULL before prime swap in change_handle (Jocelyn Falempe) [RHEL-179887] {CVE-2026-46215} +- drm: Do not allow userspace to trigger kernel warnings in drm_gem_change_handle_ioctl() (Jocelyn Falempe) [RHEL-179887] +- cxl/port: Fix use after free of parent_port in cxl_detach_ep() (Myron Stowe) [RHEL-180697] {CVE-2026-31530} +- flex_proportions: make fprop_new_period() hardirq safe (CKI Backport Bot) [RHEL-189658] {CVE-2026-23168} +- Bluetooth: l2cap: Add missing chan lock in l2cap_ecred_reconf_rsp (CKI Backport Bot) [RHEL-188331] {CVE-2026-53071} +- redhat/configs: disable CONFIG_PT_RECLAIM (Luiz Capitulino) [RHEL-186311] +- libperf build: Always place libperf includes first (Michael Petlan) [RHEL-183975] +Resolves: RHEL-173103, RHEL-179887, RHEL-180697, RHEL-183975, RHEL-186311, RHEL-188331, RHEL-189658, RHEL-192232 + +* Tue Jul 14 2026 Jan Stancek [6.12.0-211.34.1.el10_2] +- crypto: ccp - copy IV using skcipher ivsize (CKI Backport Bot) [RHEL-188463] {CVE-2026-53016} +- xfs: resample the data fork mapping after cycling ILOCK (Carlos Maiolino) [RHEL-193945] +- xfrm: esp: restore combined single-frag length gate (CKI Backport Bot) [RHEL-178326] +Resolves: RHEL-178326, RHEL-188463, RHEL-193945 + +* Thu Jul 09 2026 CKI KWF Bot [6.12.0-211.33.1.el10_2] +- futex/requeue: Revert "Prevent NULL pointer dereference in remove_waiter() on self-deadlock"" (CKI Backport Bot) [RHEL-193250] {CVE-2026-53166} +- futex/requeue: Prevent NULL pointer dereference in remove_waiter() on self-deadlock (CKI Backport Bot) [RHEL-193250] {CVE-2026-43499} +- locking/rtmutex: Skip remove_waiter() when waiter is not enqueued (CKI Backport Bot) [RHEL-193153] {CVE-2026-43499} +- rtmutex: Use waiter::task instead of current in remove_waiter() (CKI Backport Bot) [RHEL-193153] {CVE-2026-43499} +- md/bitmap: fix GPF in write_page caused by resize race (Nigel Croxon) [RHEL-174092] {CVE-2026-43163} +Resolves: RHEL-174092, RHEL-193153, RHEL-193250 + +* Tue Jul 07 2026 CKI KWF Bot [6.12.0-211.32.1.el10_2] +- KVM: x86: Fix shadow paging use-after-free due to unexpected role (Paolo Bonzini) [RHEL-192407] {CVE-2026-53359} +- KVM: x86: Fix shadow paging use-after-free due to unexpected GFN (CKI Backport Bot) [RHEL-186698] {CVE-2026-46113} +- net/sched: ets: Always remove class from active list before deleting in ets_qdisc_change (CKI Backport Bot) [RHEL-183007] {CVE-2025-71066} +- sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL (CKI Backport Bot) [RHEL-179854] {CVE-2026-46227} +Resolves: RHEL-179854, RHEL-183007, RHEL-186698, RHEL-192407 + +* Mon Jul 06 2026 CKI KWF Bot [6.12.0-211.31.1.el10_2] +- eventpoll: refresh epi_fget() / ep_remove_file() comments (Ian Kent) [RHEL-180776] +- eventpoll: Fix integer overflow in ep_loop_check_proc() (Ian Kent) [RHEL-180776] +- eventpoll: drop vestigial epi->dying flag (Ian Kent) [RHEL-180776] +- eventpoll: Fix semi-unbounded recursion (Ian Kent) [RHEL-180776] {CVE-2025-38614} +- eventpoll: drop dead bool return from ep_remove_epi() (Ian Kent) [RHEL-180776] +- eventpoll: refresh eventpoll_release() fast-path comment (Ian Kent) [RHEL-180776] +- eventpoll: move f_lock acquisition into ep_remove_file() (Ian Kent) [RHEL-180776] +- eventpoll: fix ep_remove struct eventpoll / struct file UAF (Ian Kent) [RHEL-180776] {CVE-2026-46242} +- eventpoll: drop vestigial __ prefix from ep_remove_{file,epi}() (Ian Kent) [RHEL-180776] +- eventpoll: move epi_fget() up (Ian Kent) [RHEL-180776] +- eventpoll: rename ep_remove_safe() back to ep_remove() (Ian Kent) [RHEL-180776] +- eventpoll: kill __ep_remove() (Ian Kent) [RHEL-180776] +- eventpoll: split __ep_remove() (Ian Kent) [RHEL-180776] +- eventpoll: use hlist_is_singular_node() in __ep_remove() (Ian Kent) [RHEL-180776] +- eventpoll: defer struct eventpoll free to RCU grace period (Ian Kent) [RHEL-173832] {CVE-2026-43074} +- epoll: annotate racy check (Ian Kent) [RHEL-180776] +- smb/client: fix out-of-bounds read in smb2_compound_op() (Paulo Alcantara) [RHEL-180048] {CVE-2026-46155} +- smb: client: fix off-by-8 bounds check in check_wsl_eas() (Paulo Alcantara) [RHEL-180048] +- tg3: Fix race for querying speed/duplex (CKI Backport Bot) [RHEL-182770] +- procfs: fix missing RCU protection when reading real_parent in do_task_stat() (CKI Backport Bot) [RHEL-181902] {CVE-2026-46259} +- net/ipv6: ioam6: prevent schema length wraparound in trace fill (Antoine Tenart) [RHEL-174786] {CVE-2026-43341} +- net/mana: Null service_wq on setup error to prevent double destroy (CKI Backport Bot) [RHEL-180277] {CVE-2026-43276} +- net: mana: Fix double destroy_workqueue on service rescan PCI path (CKI Backport Bot) [RHEL-180277] {CVE-2026-43276} +- net: page_pool: avoid false positive warning if NAPI was never added (Ivan Vecera) [RHEL-162140] +Resolves: RHEL-162140, RHEL-173832, RHEL-174786, RHEL-180048, RHEL-180277, RHEL-180776, RHEL-181902, RHEL-182770 + +* Wed Jul 01 2026 CKI KWF Bot [6.12.0-211.30.1.el10_2] +- ipv6: account for fraggap on the paged allocation path (Sabrina Dubroca) [RHEL-191349] +- ipv4: account for fraggap on the paged allocation path (Sabrina Dubroca) [RHEL-191349] +- fs/smb/client: fix out-of-bounds read in cifs_sanitize_prepath (CKI Backport Bot) [RHEL-189491] {CVE-2026-43112} +- Enable workaround for ARM64 ERRATUM 4118414 (Mark Salter) [RHEL-183592] {CVE-2025-10263} +- arm64: errata: Mitigate TLBI errata on Microsoft Azure Cobalt 100 CPU (Mark Salter) [RHEL-183592] {CVE-2025-10263} +- arm64: errata: Mitigate TLBI errata on NVIDIA Olympus CPU (Mark Salter) [RHEL-183592] {CVE-2025-10263} +- arm64: errata: Mitigate TLBI errata on various Arm CPUs (Mark Salter) [RHEL-183592] {CVE-2025-10263} +- arm64: cputype: Add C1-Ultra definitions (Mark Salter) [RHEL-183592] {CVE-2025-10263} +- arm64: cputype: Add C1-Premium definitions (Mark Salter) [RHEL-183592] {CVE-2025-10263} +- arm64: cputype: Add C1-Pro definitions (Mark Salter) [RHEL-183592] {CVE-2025-10263} +- crypto: krb5 - filter out async aead implementations at alloc (CKI Backport Bot) [RHEL-182537] +- crypto: krb5enc - fix async decrypt skipping hash verification (CKI Backport Bot) [RHEL-182537] +- crypto: krb5enc - fix sleepable flag handling in encrypt dispatch (CKI Backport Bot) [RHEL-182537] +- crypto: testmgr - allow authenc(hmac(sha{256,384}),cts(cbc(aes))) in FIPS mode (CKI Backport Bot) [RHEL-182537] +- ASoC: SDCA: fix NULL pointer dereference in sdca_dev_unregister_functions (CKI Backport Bot) [RHEL-185110] +- KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry (CKI Backport Bot) [RHEL-183965] {CVE-2026-46316} +- netfilter: nft_inner: Fix IPv6 inner_thoff desync (CKI Backport Bot) [RHEL-181936] {CVE-2026-46244} +- drm/gem: Fix inconsistent plane dimension calculation in drm_gem_fb_init_with_funcs() (CKI Backport Bot) [RHEL-179912] {CVE-2026-46209} +- rxrpc: Fix rxrpc_input_call_event() to only unshare DATA packets (CKI Backport Bot) [RHEL-179566] {CVE-2026-45998} +- rxrpc: Fix potential UAF after skb_unshare() failure (CKI Backport Bot) [RHEL-179566] {CVE-2026-45998} +Resolves: RHEL-179566, RHEL-179912, RHEL-181936, RHEL-182537, RHEL-183592, RHEL-183965, RHEL-185110, RHEL-189491, RHEL-191349 + +* Mon Jun 29 2026 CKI KWF Bot [6.12.0-211.29.1.el10_2] +- RDMA/mlx5: Fix error path fall-through in mlx5_ib_dev_res_srq_init() (CKI Backport Bot) [RHEL-180001] {CVE-2026-46176} +- crypto: tegra - Return ENOMEM when input buffer allocation fails for ccm (Vladislav Dronov) [RHEL-182759] +- crypto: tegra - Fix dma_free_coherent size error (Vladislav Dronov) [RHEL-182759] +- crypto: tegra - Don't touch bo refcount in host1x bo pin/unpin (Vladislav Dronov) [RHEL-182759] +- crypto: tegra - Add missing CRYPTO_ALG_ASYNC (Vladislav Dronov) [RHEL-182759] {CVE-2026-31739} +- crypto: tegra - Use int type to store negative error codes (Vladislav Dronov) [RHEL-182759] +- crypto: tegra - Remove the use of dev_err_probe() (Vladislav Dronov) [RHEL-182759] +- crypto: tegra - use API helpers to setup fallback request (Vladislav Dronov) [RHEL-182759] +- crypto: tegra - remove unneeded crypto_engine_stop() call (Vladislav Dronov) [RHEL-182759] +- scsi: qla2xxx: Add support to report MPI FW state (Ewan D. Milne) [RHEL-181887] +- RDMA/vmw_pvrdma: Fix double free on pvrdma_alloc_ucontext() error path (CKI Backport Bot) [RHEL-179965] {CVE-2026-46189} +- ALSA: aloop: Fix peer runtime UAF during format-change stop (CKI Backport Bot) [RHEL-179317] {CVE-2026-46090} +- ALSA: usb-audio: Add sanity check for OOB writes at silencing (CKI Backport Bot) [RHEL-173937] {CVE-2026-43279} +Resolves: RHEL-173937, RHEL-179317, RHEL-179965, RHEL-180001, RHEL-181887, RHEL-182759 + +* Thu Jun 25 2026 CKI KWF Bot [6.12.0-211.28.1.el10_2] +- selinux: RHEL-only hotfix for execmem regression (Ondrej Mosnacek) [RHEL-185117] +- tcp: fix potential race in tcp_v6_syn_recv_sock() (Paolo Abeni) [RHEL-174242] {CVE-2026-43198} +- scsi: qla2xxx: Completely fix fcport double free (Ewan D. Milne) [RHEL-179755] {CVE-2026-43414} +- RDMA/mana: Remove user triggerable WARN_ON() in mana_ib_create_qp_rss() (CKI Backport Bot) [RHEL-180155] {CVE-2026-46117} +- RDMA/iwcm: Fix workqueue list corruption by removing work_list (CKI Backport Bot) [RHEL-179665] {CVE-2026-45898} +- rxrpc: fix RESPONSE authenticator parser OOB read (CKI Backport Bot) [RHEL-171456] {CVE-2026-31636} +Resolves: RHEL-171456, RHEL-174242, RHEL-179665, RHEL-179755, RHEL-180155, RHEL-185117 + +* Mon Jun 22 2026 CKI KWF Bot [6.12.0-211.27.1.el10_2] +- nvmet-tcp: fix race between ICReq handling and queue teardown (CKI Backport Bot) [RHEL-180106] {CVE-2026-46135} +- RDMA/mana: Validate rx_hash_key_len (CKI Backport Bot) [RHEL-180090] {CVE-2026-46145} +- ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach() (Guillaume Nault) [RHEL-172675] {CVE-2026-43038} +Resolves: RHEL-172675, RHEL-180090, RHEL-180106 + +* Thu Jun 18 2026 CKI KWF Bot [6.12.0-211.26.1.el10_2] +- net/sched: fix pedit partial COW leading to page cache corruption (Ivan Vecera) [RHEL-177380] {CVE-2026-46331} +- exit: prevent preemption of oopsing TASK_DEAD task (CKI Backport Bot) [RHEL-180009] {CVE-2026-46173} +- crypto: caam - fix overflow on long hmac keys (CKI Backport Bot) [RHEL-179769] {CVE-2026-43330} +- net: mana: fix use-after-free in add_adev() error path (CKI Backport Bot) [RHEL-172772] {CVE-2026-43056} +Resolves: RHEL-172772, RHEL-177380, RHEL-179769, RHEL-180009 + +* Wed Jun 17 2026 CKI KWF Bot [6.12.0-211.25.1.el10_2] +- gitlab-ci: use rhel10.2 builder image (Michael Krausch-Hofmann) +- redhat/configs: enable watchdog pretimout panic functionality for x86 (David Arcari) [RHEL-182299] +- watchdog: wdat_wdt: Fix ACPI table leak in probe function (David Arcari) [RHEL-182299] +- mptcp: fix slab-use-after-free in __inet_lookup_established (CKI Backport Bot) [RHEL-171510] {CVE-2026-31669} +Resolves: RHEL-171510, RHEL-182299 + +* Mon Jun 15 2026 CKI KWF Bot [6.12.0-211.24.1.el10_2] +- s390/mm: Add missing secure storage access fixups for donated memory (Jan Polensky) [RHEL-183319] +- ibmveth: Disable GSO for packets with small MSS (Mamatha Inamdar) [RHEL-179723] +- rbd: eliminate a race in lock_dwork draining on unmap (CKI Backport Bot) [RHEL-183127] +- objtool/klp: Fix unexported static call key access for manually built livepatch modules (Joe Lawrence) [RHEL-178495] +- bnxt_en: Fix RSS context delete logic (CKI Backport Bot) [RHEL-180307] {CVE-2026-43260} +- wifi: mac80211: remove station if connection prep fails (CKI Backport Bot) [RHEL-180126] {CVE-2026-46125} +- wifi: mac80211: drop stray 'static' from fast-RX rx_result (CKI Backport Bot) [RHEL-180060] {CVE-2026-46152} +- wifi: mac80211: use safe list iteration in radar detect work (CKI Backport Bot) [RHEL-180022] {CVE-2026-46166} +- Bluetooth: hci_event: fix potential UAF in SSP passkey handlers (CKI Backport Bot) [RHEL-179358] {CVE-2026-46056} +- scsi: lpfc: Fix reusing an ndlp that is marked NLP_DROPPED during FLOGI (Ewan D. Milne) [RHEL-171774] +- can: isotp: fix tx.buf use-after-free in isotp_sendmsg() (CKI Backport Bot) [RHEL-175533] {CVE-2026-31474} +- Buffer overflow in drivers/xen/sys-hypervisor.c (Vitaly Kuznetsov) [RHEL-172516] {CVE-2026-31786} +- Bluetooth: hci_sync: fix stack buffer overflow in hci_le_big_create_sync (CKI Backport Bot) [RHEL-172862] {CVE-2026-31772} +- xen/privcmd: fix double free via VMA splitting (CKI Backport Bot) [RHEL-172492] {CVE-2026-31787} +- rxrpc: Fix RxGK token loading to check bounds (CKI Backport Bot) [RHEL-171419] {CVE-2026-31641} +Resolves: RHEL-171419, RHEL-171774, RHEL-172492, RHEL-172516, RHEL-172862, RHEL-175533, RHEL-178495, RHEL-179358, RHEL-179723, RHEL-180022, RHEL-180060, RHEL-180126, RHEL-180307, RHEL-183127, RHEL-183319 + +* Thu Jun 11 2026 CKI KWF Bot [6.12.0-211.23.1.el10_2] +- s390/ap: Expose ap_bindings_complete_count counter via sysfs (Mircea Dragan) [RHEL-166047] +Resolves: RHEL-166047 + +* Wed Jun 10 2026 CKI KWF Bot [6.12.0-211.22.1.el10_2] +- redhat: Fix rebuild changelog generation for automotive (Oleksii Baranov) +- scripts/sorttable: Fix endianness handling in build-time mcount sort (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Allow matches to functions before function entry (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Use normal sort if theres no relocs in the mcount section (Jerome Marchand) [RHEL-180932] +- ftrace: Check against is_kernel_text() instead of kaslr_offset() (Jerome Marchand) [RHEL-180932] +- ftrace: Test mcount_loc addr before calling ftrace_call_addr() (Jerome Marchand) [RHEL-180932] +- ftrace: Do not over-allocate ftrace memory (Jerome Marchand) [RHEL-180932] +- ftrace: Have ftrace pages output reflect freed pages (Jerome Marchand) [RHEL-180932] +- ftrace: Update the mcount_loc check of skipped entries (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Zero out weak functions in mcount_loc table (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Always use an array for the mcount_loc sorting (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Have mcount rela sort use direct values (Jerome Marchand) [RHEL-180932] +- arm64: scripts/sorttable: Implement sorting mcount_loc at boot for arm64 (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Use a structure of function pointers for elf helpers (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Get start/stop_mcount_loc from ELF file directly (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Move code from sorttable.h into sorttable.c (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Use uint64_t for mcount sorting (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Add helper functions for Elf_Sym (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Add helper functions for Elf_Shdr (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Add helper functions for Elf_Ehdr (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Convert Elf_Sym MACRO over to a union (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Replace Elf_Shdr Macro with a union (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Convert Elf_Ehdr to union (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Make compare_extable() into two functions (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Have the ORC code use the _r() functions to read (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Remove unneeded Elf_Rel (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Remove unused write functions (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: Remove unused macro defines (Jerome Marchand) [RHEL-180932] +- scripts/sorttable: fix orc_sort_cmp() to maintain symmetry and transitivity (Jerome Marchand) [RHEL-180932] +- selinux: fix overlayfs mmap() and mprotect() access checks (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: add backing_file LSM hooks (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- fs: prepare for adding LSM blob to backing_file (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: cleanup the debug and console output in lsm_init.c (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: add/tweak function header comment blocks in lsm_init.c (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: fold lsm_init_ordered() into security_init() (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: cleanup initialize_lsm() and rename to lsm_init_single() (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: cleanup the LSM blob size code (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: rename/rework ordered_lsm_parse() to lsm_order_parse() (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: rename/rework append_ordered_lsm() into lsm_order_append() (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: rename exists_ordered_lsm() to lsm_order_exists() (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: rework the LSM enable/disable setter/getter functions (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: get rid of the lsm_names list and do some cleanup (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: rework lsm_active_cnt and lsm_idlist[] (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: rename the lsm order variables for consistency (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: replace the name field with a pointer to the lsm_id struct (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: rename ordered_lsm_init() to lsm_init_ordered() (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: integrate lsm_early_cred() and lsm_early_task() into caller (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: integrate report_lsm_order() code into caller (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: introduce looping macros for the initialization code (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: consolidate lsm_allowed() and prepare_lsm() into lsm_prepare() (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: split the init code out into lsm_init.c (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- lsm: split the notifier code out into lsm_notifier.c (Ondrej Mosnacek) [RHEL-179437] {CVE-2026-46054} +- fs: constify file ptr in backing_file accessor helpers (Ondrej Mosnacek) [RHEL-179437] +- ipv6: rpl: reserve mac_len headroom when recompressed SRH grows (Antoine Tenart) [RHEL-178413] {CVE-2026-43501} +- ip6_tunnel: clear skb2->cb[] in ip4ip6_err() (Guillaume Nault) [RHEL-172651] {CVE-2026-43037} +- ALSA: 6fire: fix use-after-free on disconnect (CKI Backport Bot) [RHEL-172973] {CVE-2026-31581} +- erofs: add GFP_NOIO in the bio completion if needed (CKI Backport Bot) [RHEL-171686] {CVE-2026-31467} +- can: raw: fix ro->uniq use-after-free in raw_rcv() (CKI Backport Bot) [RHEL-170764] {CVE-2026-31532} +- nouveau/gsp: drop WARN_ON in ACPI probes (Gary Guo) [RHEL-167788] +Resolves: RHEL-167788, RHEL-170764, RHEL-171686, RHEL-172651, RHEL-172973, RHEL-178413, RHEL-179437, RHEL-180932 + +* Thu Jun 04 2026 CKI KWF Bot [6.12.0-211.21.1.el10_2] +- s390/dasd: Copy detected format information to secondary device (Ramesh Chhetri) [RHEL-176473] +- s390/dasd: Move quiesce state with pprc swap (Ramesh Chhetri) [RHEL-176473] +- s390/dasd: Fix gendisk parent after copy pair swap (Ramesh Chhetri) [RHEL-176473] +- ice: fix stats array overflow when VF requests more queues (Michal Schmidt) [RHEL-177518] +- s390/pci: Avoid deadlock between PCI error recovery and mlx5 crdump (Mircea Dragan) [RHEL-166855] +- net: bonding: fix use-after-free in bond_xmit_broadcast() (CKI Backport Bot) [RHEL-168073] {CVE-2026-31419} +Resolves: RHEL-166855, RHEL-168073, RHEL-176473, RHEL-177518 + +* Tue Jun 02 2026 CKI KWF Bot [6.12.0-211.20.1.el10_2] +- smb: client: reject userspace cifs.spnego descriptions (Paulo Alcantara) [RHEL-178932] {CVE-2026-46243} +- redhat/configs: automotive: disable CONFIG_IO_URING (Brian Masney) [RHEL-179469] +- sched/deadline: Fix dl_server time accounting (Phil Auld) [RHEL-173950] +- smb: client: fix OOB reads parsing symlink error response (CKI Backport Bot) [RHEL-171475] {CVE-2026-31613} +- pNFS: fix a missing wake up while waiting on NFS_LAYOUT_DRAIN (Olga Kornievskaia) [RHEL-157466] +Resolves: RHEL-157466, RHEL-171475, RHEL-173950, RHEL-178932, RHEL-179469 + +* Thu May 28 2026 CKI KWF Bot [6.12.0-211.19.1.el10_2] +- Bluetooth: hci_sync: Fix UAF in le_read_features_complete (David Marlin) [RHEL-176903] {CVE-2026-43322} +- Bluetooth: hci_sync: fix leaks when hci_cmd_sync_queue_once fails (David Marlin) [RHEL-176903] +- Bluetooth: hci_sync: hci_cmd_sync_queue_once() return -EEXIST if exists (David Marlin) [RHEL-176903] +- Bluetooth: L2CAP: Add support for setting BT_PHY (David Marlin) [RHEL-176903] +- Bluetooth: hci_conn: Fix using conn->le_{tx,rx}_phy as supported PHYs (David Marlin) [RHEL-176903] +- Bluetooth: HCI: Add support for LL Extended Feature Set (David Marlin) [RHEL-176903] +- Bluetooth: ISO: Add support to bind to trigger PAST (David Marlin) [RHEL-176903] +- Bluetooth: HCI: Add initial support for PAST (David Marlin) [RHEL-176903] +- netfilter: flowtable: strictly check for maximum number of actions (CKI Backport Bot) [RHEL-176915] {CVE-2026-43329} +- dpll: zl3073x: report FFO as DPLL vs input reference offset (Ivan Vecera) [RHEL-175824] +- dpll: add fractional frequency offset to pin-parent-device (Ivan Vecera) [RHEL-175824] +- dpll: zl3073x: implement pin operational state reporting (Ivan Vecera) [RHEL-175821] +- dpll: add pin operational state (Ivan Vecera) [RHEL-175821] +- smb: client: validate dacloffset before building DACL pointers (Paulo Alcantara) [RHEL-172827] +- smb: client: use kzalloc to zero-initialize security descriptor buffer (Paulo Alcantara) [RHEL-172827] +- smb: client: scope end_of_dacl to CIFS_DEBUG2 use in parse_dacl (Paulo Alcantara) [RHEL-172827] +- smb: client: require a full NFS mode SID before reading mode bits (Paulo Alcantara) [RHEL-172827] +- smb: client: validate the whole DACL before rewriting it in cifsacl (Paulo Alcantara) [RHEL-172827] {CVE-2026-31709} +- dpll: zl3073x: add ref-sync pair support (Ivan Vecera) [RHEL-167277] +- dpll: zl3073x: add ref sync and output clock type helpers (Ivan Vecera) [RHEL-167277] +- dpll: zl3073x: use FIELD_MODIFY() for clear-and-set patterns (Ivan Vecera) [RHEL-167277] +- dpll: zl3073x: clean up esync get/set and use zl3073x_out_is_ndiv() (Ivan Vecera) [RHEL-167277] +- dpll: zl3073x: implement frequency monitoring (Ivan Vecera) [RHEL-167837] +- dpll: add frequency monitoring callback ops (Ivan Vecera) [RHEL-167837] +- dpll: add frequency monitoring to netlink spec (Ivan Vecera) [RHEL-167837] +- dpll: zl3073x: drop selected and simplify connected ref getter (Ivan Vecera) [RHEL-172930] +- dpll: zl3073x: add reference priority to zl3073x_chan (Ivan Vecera) [RHEL-172930] +- dpll: zl3073x: add DPLL channel status fields to zl3073x_chan (Ivan Vecera) [RHEL-172930] +- dpll: zl3073x: introduce zl3073x_chan for DPLL channel state (Ivan Vecera) [RHEL-172930] +- dpll: zl3073x: add zl3073x_ref_state_update helper (Ivan Vecera) [RHEL-172930] +- dpll: zl3073x: use struct_group to partition states (Ivan Vecera) [RHEL-172930] +- dpll: zl3073x: add die temperature reporting for supported chips (Ivan Vecera) [RHEL-172930] +- dpll: zl3073x: detect DPLL channel count from chip ID at runtime (Ivan Vecera) [RHEL-172930] +- crypto: authenc - Correctly pass EINPROGRESS back up to the caller (CKI Backport Bot) [RHEL-171302] +- nbd: defer config unlock in nbd_genl_connect (CKI Backport Bot) [RHEL-166953] {CVE-2025-68366} +- proc: fix type confusion in pde_set_flags() (Abhi Das) [RHEL-163345] {CVE-2025-38653} +- proc: fix missing pde_set_flags() for net proc files (Abhi Das) [RHEL-163345] {CVE-2025-38653} +- proc: use the same treatment to check proc_lseek as ones for proc_read_iter et.al (CKI Backport Bot) [RHEL-163345] {CVE-2025-38653} +Resolves: RHEL-163345, RHEL-166953, RHEL-167277, RHEL-167837, RHEL-171302, RHEL-172827, RHEL-172930, RHEL-175821, RHEL-175824, RHEL-176903, RHEL-176915 + +* Thu May 21 2026 CKI KWF Bot [6.12.0-211.18.1.el10_2] +- xfs: fix freemap adjustments when adding xattrs to leaf blocks (CKI Backport Bot) [RHEL-174051] {CVE-2026-43158} +- xfs: delete attr leaf freemap entries when empty (CKI Backport Bot) [RHEL-174051] {CVE-2026-43158} +- Bluetooth: SCO: fix race conditions in sco_sock_connect() (CKI Backport Bot) [RHEL-172603] {CVE-2026-43023} +- Bluetooth: MGMT: validate LTK enc_size on load (CKI Backport Bot) [RHEL-172577] {CVE-2026-43020} +- crypto: tegra - Disable softirqs before finalizing request (CKI Backport Bot) [RHEL-133872] +Resolves: RHEL-133872, RHEL-172577, RHEL-172603, RHEL-174051 + +* Wed May 20 2026 CKI KWF Bot [6.12.0-211.17.1.el10_2] +- dm-thin: fix metadata refcount underflow (Benjamin Marzinski) [RHEL-169625] +- redhat/kernel.spec.template: disable OBJTOOL_WERROR for gcov builds (Oleksii Baranov) +- mm/page_alloc: clear page->private in free_pages_prepare() (Rafael Aquini) [RHEL-174756] {CVE-2026-43303} +- dpaa2-switch: validate num_ifs to prevent out-of-bounds write (CKI Backport Bot) [RHEL-174258] {CVE-2026-43205} +- dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero (CKI Backport Bot) [RHEL-174258] {CVE-2026-43205} +- mm: thp: deny THP for files on anonymous inodes (Rafael Aquini) [RHEL-171617] {CVE-2026-23375} +- fs: add S_ANON_INODE (Rafael Aquini) [RHEL-171617] +- anon_inode: raise SB_I_NODEV and SB_I_NOEXEC (Rafael Aquini) [RHEL-171617] +- pidfs: use anon_inode_setattr() (Rafael Aquini) [RHEL-171617] +- anon_inode: explicitly block ->setattr() (Rafael Aquini) [RHEL-171617] +- pidfs: use anon_inode_getattr() (Rafael Aquini) [RHEL-171617] +- anon_inode: use a proper mode internally (Rafael Aquini) [RHEL-171617] +- ice: set max queues in alloc_etherdev_mqs() (CKI Backport Bot) [RHEL-174331] +- ice: use netif_get_num_default_rss_queues() (CKI Backport Bot) [RHEL-174331] +- net: Fix rcu_tasks stall in threaded busypoll (CKI Backport Bot) [RHEL-170809] +- netfilter: xt_tcpmss: check remaining length before reading optlen (CKI Backport Bot) [RHEL-174217] {CVE-2026-43190} +- netfilter: ctnetlink: ensure safe access to master conntrack (CKI Backport Bot) [RHEL-173872] {CVE-2026-43116} +- wifi: brcmfmac: validate bsscfg indices in IF events (CKI Backport Bot) [RHEL-173857] {CVE-2026-43110} +- redhat/configs: enable CONFIG_AQTION on all archs (CKI Backport Bot) [RHEL-171944] +- HID: wacom: fix out-of-bounds read in wacom_intuos_bt_irq (CKI Backport Bot) [RHEL-172745] {CVE-2026-43051} +- netfilter: nf_conntrack_helper: pass helper to expect cleanup (CKI Backport Bot) [RHEL-172625] {CVE-2026-43027} +- io_uring/rsrc: reject zero-length fixed buffer import (CKI Backport Bot) [RHEL-172556] {CVE-2026-43006} +- dpll: zl3073x: Remove redundant cleanup in devm_dpll_init() (CKI Backport Bot) [RHEL-164434] +- dpll: zl3073x: fix REF_PHASE_OFFSET_COMP register width for some chip IDs (CKI Backport Bot) [RHEL-164434] +- dpll: zl3073x: Fix ref frequency setting (CKI Backport Bot) [RHEL-164434] +- dpll: zl3073x: Include current frequency in supported frequencies list (CKI Backport Bot) [RHEL-164434] +- dpll: zl3073x: Add output pin frequency helper (CKI Backport Bot) [RHEL-164434] +- cifs: make default value of retrans as zero (Paulo Alcantara) [RHEL-171637] +- cifs: remove unnecessary tracing after put tcon (Paulo Alcantara) [RHEL-171637] +- netfilter: ip6t_eui64: reject invalid MAC header for all packets (CKI Backport Bot) [RHEL-171159] {CVE-2026-31685} +- net: sched: act_csum: validate nested VLAN headers (CKI Backport Bot) [RHEL-171142] {CVE-2026-31684} +- drm/mgag200: fix mgag200_bmc_stop_scanout() (Jocelyn Falempe) [RHEL-150180] +- scsi: lpfc: avoid crashing in lpfc_nlp_get() if lpfc_nodelist was freed (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Revise logging format for failed CT MIB requests" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Update debugfs trace ring initialization messages" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Check for hdwq null ptr when cleaning up lpfc_vport structure" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Skip RSCN processing when FC_UNLOADING flag is set" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Early return out of FDMI cmpl for locally rejected statuses" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Simplify error handling for failed lpfc_get_sli4_parameters cmd" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Relocate clearing initial phba flags from link up to link down hdlr" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Ensure HBA_SETUP flag is used only for SLI4 in dev_loss_tmo_callbk" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Move clearing of HBA_SETUP flag to before lpfc_sli4_queue_unset" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Revise CQ_CREATE_SET mailbox bitfield definitions" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Modify end-of-life adapters' model descriptions" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Update lpfc version to 14.4.0.10" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Copyright updates for 14.4.0.10 patches" (Ewan D. Milne) [RHEL-169786] +- Revert "lpfc: don't use file->f_path.dentry for comparisons" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Fix wrong function reference in a comment" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: use min() to improve code" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Use int type to store negative error codes" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Remove unused member variables in struct lpfc_hba and lpfc_vport" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Abort outstanding ELS WQEs regardless of if rmmod is in progress" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Clean up allocated queues when queue setup mbox commands fail" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Remove ndlp kref decrement clause for F_Port_Ctrl in lpfc_cleanup" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Decrement ndlp kref after FDISC retries exhausted" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Check return status of lpfc_reset_flush_io_context during TGT_RESET" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Ensure PLOGI_ACC is sent prior to PRLI in Point to Point topology" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Define size of debugfs entry for xri rebalancing" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Fix memory leak when nvmeio_trc debugfs entry is used" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Use switch case statements in DIF debugfs handlers" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Clean up extraneous phba dentries" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Convert debugfs directory counts from atomic to unsigned int" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Update lpfc version to 14.4.0.11" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Copyright updates for 14.4.0.11 patches" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Update various NPIV diagnostic log messaging" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Revise discovery related function headers and comments" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Remove redundant NULL ptr assignment in lpfc_els_free_iocb()" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Ensure unregistration of rpis for received PLOGIs" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Fix leaked ndlp krefs when in point-to-point topology" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Modify kref handling for Fabric Controller ndlps" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Fix reusing an ndlp that is marked NLP_DROPPED during FLOGI" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Allow support for BB credit recovery in point-to-point topology" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Add capability to register Platform Name ID to fabric" (Ewan D. Milne) [RHEL-169786] +- Revert "scsi: lpfc: Update lpfc version to 14.4.0.12" (Ewan D. Milne) [RHEL-169786] +- netfilter: nf_conntrack_h323: check for zero length in DecodeQ931() (CKI Backport Bot) [RHEL-166991] {CVE-2026-23455} +- ima: don't clear IMA_DIGSIG flag when setting or removing non-IMA xattr (Bruno Meneguele) [RHEL-169738] {CVE-2025-68183} +- can: j1939: j1939_session_new(): fix skb reference counting (CKI Backport Bot) [RHEL-162260] {CVE-2024-56645} +- netfilter: nf_tables: release flowtable after rcu grace period on error (CKI Backport Bot) [RHEL-160469] {CVE-2026-23392} +Resolves: RHEL-150180, RHEL-160469, RHEL-162260, RHEL-164434, RHEL-166991, RHEL-169625, RHEL-169738, RHEL-169786, RHEL-170809, RHEL-171142, RHEL-171159, RHEL-171617, RHEL-171637, RHEL-171944, RHEL-172556, RHEL-172625, RHEL-172745, RHEL-173857, RHEL-173872, RHEL-174217, RHEL-174258, RHEL-174331, RHEL-174756 + +* Mon May 18 2026 CKI KWF Bot [6.12.0-211.16.1.el10_2] +- net: skbuff: propagate shared-frag marker through frag-transfer helpers (Sabrina Dubroca) [RHEL-176053] {CVE-2026-46300} +- net: skbuff: preserve shared-frag marker during coalescing (Sabrina Dubroca) [RHEL-176053] {CVE-2026-46300} +- ptrace: slightly saner 'get_dumpable()' logic (Ricardo Robaina) [RHEL-176449] {CVE-2026-46333} +- RDMA/umem: Fix double dma_buf_unpin in failure path (CKI Backport Bot) [RHEL-174029] {CVE-2026-43128} +- usbip: validate number_of_packets in usbip_pack_ret_submit() (CKI Backport Bot) [RHEL-171434] {CVE-2026-31607} +Resolves: RHEL-171434, RHEL-174029, RHEL-176053, RHEL-176449 + +* Mon May 11 2026 Patrick Talbert [6.12.0-211.15.1.el10_2] +- xfrm: esp: avoid in-place decrypt on shared skb frags (CKI Backport Bot) [RHEL-174546] {CVE-2026-43284} +Resolves: RHEL-174546 + +* Mon May 04 2026 Patrick Talbert [6.12.0-211.14.1.el10_2] +- crypto: algif_aead - snapshot IV for async AEAD requests (Herbert Xu) [RHEL-172213] +- crypto: algif_aead - Fix minimum RX size check for decryption (Herbert Xu) [RHEL-172213] +- crypto: authencesn - reject short ahash digests during instance creation (Herbert Xu) [RHEL-172213] +- crypto: authencesn - Fix src offset when decrypting in-place (Herbert Xu) [RHEL-172213] +- crypto: authencesn - Do not place hiseq at end of dst for out-of-place decryption (Herbert Xu) [RHEL-172213] {CVE-2026-31431} +- crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec (Herbert Xu) [RHEL-172213] {CVE-2026-23060} +- crypto: af_alg - Fix page reassignment overflow in af_alg_pull_tsgl (Herbert Xu) [RHEL-172213] +- crypto: af_alg - limit RX SG extraction by receive buffer budget (Herbert Xu) [RHEL-172213] {CVE-2026-31677} +- crypto: algif_aead - Revert to operating out-of-place (Herbert Xu) [RHEL-172213] {CVE-2026-31431} +- crypto: af-alg - fix NULL pointer dereference in scatterwalk (Herbert Xu) [RHEL-172213] +Resolves: RHEL-172213 + +* Thu Apr 30 2026 CKI KWF Bot [6.12.0-211.13.1.el10_2] +- scsi: storvsc: Handle PERSISTENT_RESERVE_IN truncation for Hyper-V vFC (Vitaly Kuznetsov) [RHEL-171531] +- Bluetooth: SCO: Fix use-after-free in sco_recv_frame() due to missing sock_hold (CKI Backport Bot) [RHEL-170974] {CVE-2026-31408} +Resolves: RHEL-170974, RHEL-171531 + +* Mon Apr 27 2026 CKI KWF Bot [6.12.0-211.12.1.el10_2] +- drm/i915/dp: Fix panel replay when DSC is enabled (Anusha Srivatsa) [RHEL-169354] +- drm/i915/dp_mst: Recompute all MST link CRTCs if DSC gets enabled on the link (Anusha Srivatsa) [RHEL-169354] +- drm/i915/dp_mst: Track DSC enabled status on the MST link (Anusha Srivatsa) [RHEL-169354] +- drm/i915/dp_mst: Reuse the DP-SST helper function to compute FEC config (Anusha Srivatsa) [RHEL-169354] +- drm/i915/dp: Export helper to determine if FEC on non-UHBR links is required (Anusha Srivatsa) [RHEL-169354] +- drm/i915/dp: Ensure the FEC state stays disabled for UHBR links (Anusha Srivatsa) [RHEL-169354] +- drm/i915/dsc: Add helper to enable the DSC configuration for a CRTC (Anusha Srivatsa) [RHEL-169354] +- crypto: asymmetric_keys - prevent overflow in asymmetric_key_generate_id (CKI Backport Bot) [RHEL-166932] {CVE-2025-68724} +- net: af_can: do not leave a dangling sk pointer in can_create() (CKI Backport Bot) [RHEL-162253] {CVE-2024-56603} +Resolves: RHEL-162253, RHEL-166932, RHEL-169354 + +* Thu Apr 23 2026 CKI KWF Bot [6.12.0-211.11.1.el10_2] +- nfsd: fix heap overflow in NFSv4.0 LOCK replay cache (Scott Mayhew) [RHEL-168569] {CVE-2026-31402} +- KVM: x86/mmu: Only WARN in direct MMUs when overwriting shadow-present SPTE (Paolo Bonzini) [RHEL-153716] {CVE-2026-23401} +- KVM: x86/mmu: Drop/zap existing present SPTE even when creating an MMIO SPTE (Paolo Bonzini) [RHEL-153716] {CVE-2026-23401} +Resolves: RHEL-153716, RHEL-168569 + +* Thu Apr 23 2026 CKI KWF Bot [6.12.0-211.10.1.el10_2] +- ASoC: soc_sdw_utils: remove index from sdca codec name (Jaroslav Kysela) [RHEL-163717] +- ASoC: soc_sdw_utils: partial match the codec name (Jaroslav Kysela) [RHEL-163717] +- ASoC: add snd_soc_lookup_component_by_name helper (Jaroslav Kysela) [RHEL-163717] +- ASoC: SDCA: Update counting of SU/GE DAPM routes (Jaroslav Kysela) [RHEL-163717] +- ASoC: SDCA: Handle CONFIG_PM_SLEEP not being set (Jaroslav Kysela) [RHEL-163717] +- ASoC: SDCA: Tidy up some memory allocations (Jaroslav Kysela) [RHEL-163717] +- net/sched: Only allow act_ct to bind to clsact/ingress qdiscs and shared blocks (CKI Backport Bot) [RHEL-157332] {CVE-2026-23270} +Resolves: RHEL-157332, RHEL-163717 + +* Mon Apr 20 2026 CKI KWF Bot [6.12.0-211.9.1.el10_2] +- x86/boot: Handle relative CONFIG_EFI_SBAT_FILE file paths (Oleksii Baranov) [RHEL-157855] +Resolves: RHEL-157855 + +* Thu Apr 16 2026 CKI KWF Bot [6.12.0-211.8.1.el10_2] +- ice: drop udp_tunnel_get_rx_info() call from ndo_open() (Mohammad Heib) [RHEL-165081] +- i40e: drop udp_tunnel_get_rx_info() call from i40e_open() (Mohammad Heib) [RHEL-165081] +- ALSA: hda/tas2781: Ignore reset check for SPI device (Jaroslav Kysela) [RHEL-157285] +- smb: client: fix krb5 mount with username option (Paulo Alcantara) [RHEL-158990] +- scsi: qla2xxx: Fix improper freeing of purex item (CKI Backport Bot) [RHEL-159227] {CVE-2025-68741} +- net: hv_netvsc: reject RSS hash key programming without RX indirection table (Vinay Mulugund) [RHEL-155205] +- ionic: fix persistent MAC address override on PF (Mohammad Heib) [RHEL-158206] +- net: openvswitch: Avoid releasing netdev before teardown completes (Toke Høiland-Jørgensen) [RHEL-157946] +- RDMA/bnxt_re: convert timeouts to secs_to_jiffies() (CKI Backport Bot) [RHEL-155971] +- RDMA/bnxt_re: Fix return code of bnxt_re_configure_cc (CKI Backport Bot) [RHEL-155971] +- RDMA/bnxt_re: Fix missing error handling for tx_queue (CKI Backport Bot) [RHEL-155971] +- RDMA/bnxt_re: Fix incorrect display of inactivity_cp in debugfs output (CKI Backport Bot) [RHEL-155971] +- RDMA/bnxt_re: Use macro instead of hard coded value (CKI Backport Bot) [RHEL-155971] +- RDMA/bnxt_re: Support 2G message size (CKI Backport Bot) [RHEL-155971] +- RDMA/bnxt_re: Fix size of uverbs_copy_to() in BNXT_RE_METHOD_GET_TOGGLE_MEM (CKI Backport Bot) [RHEL-155971] +- RDMA/bnxt_re: Support extended stats for Thor2 VF (CKI Backport Bot) [RHEL-155971] +- net/sched: sch_cake: Fix incorrect qlen reduction in cake_drop (Davide Caratti) [RHEL-150456] {CVE-2025-39766} +- net/sched: Make cake_enqueue return NET_XMIT_CN when past buffer_limit (Davide Caratti) [RHEL-150456] {CVE-2025-39766} +Resolves: RHEL-150456, RHEL-155205, RHEL-155971, RHEL-157285, RHEL-157946, RHEL-158206, RHEL-158990, RHEL-159227, RHEL-165081 + * Wed Apr 01 2026 CKI KWF Bot [6.12.0-211.7.1.el10_2] - kabi: enable check-kabi (Čestmír Kalina) [RHEL-153673] - kabi: add symbols to stablelist (Čestmír Kalina) [RHEL-153673] diff --git a/redhat/scripts/gating/gating.yaml b/redhat/scripts/gating/gating.yaml index 3239293cb6..3bd5112006 100644 --- a/redhat/scripts/gating/gating.yaml +++ b/redhat/scripts/gating/gating.yaml @@ -4,18 +4,10 @@ product_versions: decision_context: osci_compose_gate rules: - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-64k-aarch64.tier1.functional} - - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-64k-debug-aarch64.tier1.functional} - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-aarch64.tier1.functional} - - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-debug-aarch64.tier1.functional} - - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-debug-ppc64le.tier1.functional} - - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-debug-s390x.tier1.functional} - - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-debug-x86_64.tier1.functional} - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-ppc64le.tier1.functional} - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-rt-64k-aarch64.tier1.functional} - - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-rt-64k-debug-aarch64.tier1.functional} - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-rt-aarch64.tier1.functional} - - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-rt-debug-aarch64.tier1.functional} - - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-rt-debug-x86_64.tier1.functional} - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-rt-x86_64.tier1.functional} - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-s390x.tier1.functional} - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.kernel-x86_64.tier1.functional} diff --git a/redhat/scripts/generate-rebuild-changelog.sh b/redhat/scripts/generate-rebuild-changelog.sh index db75fac530..087244418b 100755 --- a/redhat/scripts/generate-rebuild-changelog.sh +++ b/redhat/scripts/generate-rebuild-changelog.sh @@ -1,15 +1,62 @@ #!/bin/bash # -# Generate a changelog for a kernel rebuild package. +# generate-rebuild-changelog.sh - generate a changelog for a kernel rebuild package # -# When rebuilding the kernel for a separate package, the changelog should -# clearly indicate that this is a rebuild. This script fetches the previous -# changelog from dist-git, identifies new entries from the source kernel -# changelog, and prepends them along with a rebuild log entry. +# When a kernel is rebuilt as a separate package (e.g. kernel-automotive), its +# changelog must list the base kernel commits that went into the rebuild. This +# script fetches the previous changelog from dist-git, determines which base +# kernel tags are new since the last rebuild, and produces a single changelog +# block with all the commits merged under one rebuild header. The result is +# prepended to the existing dist-git changelog so that the full history is +# preserved in chronological order. # -# This is intended to be called from make dist-git which exports the required -# environment variables. To test standalone, pass the variables on the command -# line, e.g.: +# The script handles two scenarios: +# +# 1) Rebuilding the next tag (+1) +# +# The previous rebuild was kernel-6.12.0-231.el10 and the new rebuild is +# kernel-6.12.0-232.el10. The new changelog block contains only the commits +# from tag 232: +# +# * Wed Jun 03 2026 J. Doe - 6.12.0-232.el10iv +# - Rebuild base kernel commit d3e637abf7ff for kernel-automotive +# - Mon May 25 2026 CKI KWF Bot [6.12.0-232.el10] +# - PCI: Fix alignment calculation ... [RHEL-151449] +# - scsi: ses: Fix devices attaching ... [RHEL-153020] +# Resolves: RHEL-151449, RHEL-153020 +# +# * Tue Jun 02 2026 J. Doe - 6.12.0-231.el10iv +# - Rebuild base kernel commit 1d47564ebba9 for kernel-automotive +# ... (previous dist-git changelog, unchanged) +# +# 2) Skipping tags (+N, e.g. rebuilding 233 after 231) +# +# Tags 232 and 233 were both released since the last rebuild. Their commits +# are merged into a single block and their Resolves lines are combined: +# +# * Wed Jun 03 2026 J. Doe - 6.12.0-233.el10iv +# - Rebuild base kernel commit 069b862c9daf for kernel-automotive +# - Tue May 26 2026 CKI KWF Bot [6.12.0-233.el10] +# - crypto: authenc - Correctly pass EINPROGRESS ... [RHEL-130557] +# - Mon May 25 2026 CKI KWF Bot [6.12.0-232.el10] +# - PCI: Fix alignment calculation ... [RHEL-151449] +# Resolves: RHEL-130557, RHEL-151449 +# +# * Tue Jun 02 2026 J. Doe - 6.12.0-231.el10iv +# ... (previous dist-git changelog, unchanged) +# +# The base kernel "* " headers are converted to "- " entries so they do +# not create separate RPM changelog entries, keeping everything under the +# single rebuild header in chronological order. The first such "- " line +# also serves as a version marker that the next rebuild uses to determine +# last_synced tag name. In such way we ensure that the change log contains +# only proper rebuilt tags. +# +# Generally it is not recommended to use scenario 2 for rebuilds. Use the +# first one instead. +# +# +# Called from make dist-git. To test standalone: # # REDHAT=$PWD/redhat TOPDIR=$PWD RHEL_MAJOR=10 RHEL_MINOR=2 \ # SPECPACKAGE_NAME=kernel-automotive \ @@ -55,32 +102,56 @@ if ! fetch_distgit_clog "$tmpdir" > "$distgit_clog"; then true > "$distgit_clog" fi -# Find the last kernel version rebuilt by extracting the version from the first -# [version] header of our dist-git changelog, e.g. [6.12.0-209.el10]. -last_synced=$(sed -n '/\[.*\]$/{s/.*\[\([^]]*\)\]$/\1/p;q;}' "$distgit_clog") +# Determine the base kernel version from the previous rebuild. +# Primary: read from the "- ... [version]" marker left by a prior run. +# Fallback: look up the git tag for the commit recorded in the rebuild line. +last_synced=$(sed -n '/^- .*\[[0-9][^]]*\]$/{s/.*\[\([^]]*\)\]$/\1/p;q;}' "$distgit_clog") + +if [[ -z "$last_synced" ]]; then + prev_commit=$(sed -n 's/^- Rebuild.*commit \([0-9a-f]*\) for .*/\1/p;T;q' "$distgit_clog") + if [[ -n "$prev_commit" ]]; then + tag=$(git tag --points-at "$prev_commit" 2>/dev/null \ + | grep '^kernel-' | head -1) + [[ -n "$tag" ]] && last_synced="${tag#kernel-}" + fi +fi pkg_version="$DISTBASEVERSION" +HEAD="${HEAD:-HEAD}" +commit_sha=$(git rev-parse --short=12 "$HEAD") -# Assemble: rebuild entry + new kernel entries + previous changelog +# Build the new changelog block and prepend it to the existing dist-git changelog. { - # Create the rebuild entry, e.g.: - # * Thu Feb 19 2026 Scott Weaver - 6.12.0-209.el10iv - # - Rebuilt for kernel-automotive + # Extract kernel changelog entries since last_synced. On first build + # (last_synced empty), take only the newest tag's entries. + new_entries=$(mktemp) + if [[ -n "$last_synced" ]]; then + sed "/\[${last_synced}\]/,\$d" "$kernel_clog" > "$new_entries" + else + awk '/^\* /{if(n++)exit}1' "$kernel_clog" > "$new_entries" + fi + + # Merge all Resolves lines into one (relevant for +N rebuilds). + resolves=$(grep '^Resolves:' "$new_entries" \ + | sed 's/^Resolves: *//' \ + | tr ',[:space:]' '\n' | sed '/^$/d; s/^ *//' | sort -u \ + | paste -sd, | sed 's/,/, /g') + + # Rebuild header cdate=$(LC_ALL=C date +"%a %b %d %Y") cname="$(git config user.name) <$(git config user.email)>" echo "* $cdate $cname - $pkg_version" - echo "- Rebuilt for ${SPECPACKAGE_NAME}" + echo "- Rebuild base kernel commit ${commit_sha} for ${SPECPACKAGE_NAME}" + + # Kernel entries: convert "* " headers to "- " (the first becomes a + # version marker for the next rebuild), drop per-tag Resolves and blanks. + sed 's/^\* /- /; /^Resolves:/d; /^$/d' "$new_entries" + + echo "Resolves: $resolves" + rm -f "$new_entries" + + # Previous dist-git changelog, unchanged echo "" - - # Extract only new entries from the kernel changelog. - # Take everything since the last synced version. - if [[ -n "$last_synced" ]]; then - sed "/\[${last_synced}\]/,\$d" "$kernel_clog" - else - cat "$kernel_clog" - fi - - # Append the changelog that we fetched from dist-git cat "$distgit_clog" } > "$pkg_clog" diff --git a/redhat/scripts/genspec/genlog.py b/redhat/scripts/genspec/genlog.py index fcc5007277..9663a695be 100755 --- a/redhat/scripts/genspec/genlog.py +++ b/redhat/scripts/genspec/genlog.py @@ -17,7 +17,7 @@ class CommitTags: r'(\d{4,8})\s*$', r'https?://bugzilla\.redhat\.com/(?:show_bug\.cgi\?id=)?(\d{4,8})', ], - 'JIRA': [r'https://issues\.redhat\.com/(?:browse|projects/RHEL/issues)/(RHEL-\d{1,8})'], + 'JIRA': [r'https://(?:issues\.redhat\.com|redhat\.atlassian\.net)/(?:browse|projects/RHEL/issues)/(RHEL-\d{1,8})'], 'CVE': [r'(CVE-\d{4}-\d{4,7})'], 'MR': [r'(.*)'], 'Y-Commit': [r'([0-9a-fA-F]+)'], diff --git a/redhat/self-test/data/centos-2585cf9dfaad.el7 b/redhat/self-test/data/centos-2585cf9dfaad.el7 index 818dbf5f08..00bccea415 100644 --- a/redhat/self-test/data/centos-2585cf9dfaad.el7 +++ b/redhat/self-test/data/centos-2585cf9dfaad.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE=-p stream BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/centos-2585cf9dfaad.el7.spec b/redhat/self-test/data/centos-2585cf9dfaad.el7.spec index c255c200a5..02a0be9984 100755 --- a/redhat/self-test/data/centos-2585cf9dfaad.el7.spec +++ b/redhat/self-test/data/centos-2585cf9dfaad.el7.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0-0.rc5.6.test.el7 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/centos-2585cf9dfaad.fc25 b/redhat/self-test/data/centos-2585cf9dfaad.fc25 index dc1638497e..f3226ea234 100644 --- a/redhat/self-test/data/centos-2585cf9dfaad.fc25 +++ b/redhat/self-test/data/centos-2585cf9dfaad.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE=-p stream BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/centos-2585cf9dfaad.fc25.spec b/redhat/self-test/data/centos-2585cf9dfaad.fc25.spec index 20e1e7324e..42f0da33b8 100755 --- a/redhat/self-test/data/centos-2585cf9dfaad.fc25.spec +++ b/redhat/self-test/data/centos-2585cf9dfaad.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0-0.rc5.6.test.fc25 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/centos-78e36f3b0dae.el7 b/redhat/self-test/data/centos-78e36f3b0dae.el7 index 0ad61aadd9..297115367e 100644 --- a/redhat/self-test/data/centos-78e36f3b0dae.el7 +++ b/redhat/self-test/data/centos-78e36f3b0dae.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE=-p stream BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/centos-78e36f3b0dae.el7.spec b/redhat/self-test/data/centos-78e36f3b0dae.el7.spec index ba0aae6174..4e32bdc437 100755 --- a/redhat/self-test/data/centos-78e36f3b0dae.el7.spec +++ b/redhat/self-test/data/centos-78e36f3b0dae.el7.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0-6.test.el7 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/centos-78e36f3b0dae.fc25 b/redhat/self-test/data/centos-78e36f3b0dae.fc25 index afd2021b1b..da3eedaf47 100644 --- a/redhat/self-test/data/centos-78e36f3b0dae.fc25 +++ b/redhat/self-test/data/centos-78e36f3b0dae.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE=-p stream BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/centos-78e36f3b0dae.fc25.spec b/redhat/self-test/data/centos-78e36f3b0dae.fc25.spec index 1e839aeb6a..1eb35d5032 100755 --- a/redhat/self-test/data/centos-78e36f3b0dae.fc25.spec +++ b/redhat/self-test/data/centos-78e36f3b0dae.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0-6.test.fc25 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/centos-df0cc57e057f.el7 b/redhat/self-test/data/centos-df0cc57e057f.el7 index 6d13aec1f2..2d7658b418 100644 --- a/redhat/self-test/data/centos-df0cc57e057f.el7 +++ b/redhat/self-test/data/centos-df0cc57e057f.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE=-p stream BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/centos-df0cc57e057f.el7.spec b/redhat/self-test/data/centos-df0cc57e057f.el7.spec index ba0aae6174..4e32bdc437 100755 --- a/redhat/self-test/data/centos-df0cc57e057f.el7.spec +++ b/redhat/self-test/data/centos-df0cc57e057f.el7.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0-6.test.el7 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/centos-df0cc57e057f.fc25 b/redhat/self-test/data/centos-df0cc57e057f.fc25 index 609418e7c7..6119c72166 100644 --- a/redhat/self-test/data/centos-df0cc57e057f.fc25 +++ b/redhat/self-test/data/centos-df0cc57e057f.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE=-p stream BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/centos-df0cc57e057f.fc25.spec b/redhat/self-test/data/centos-df0cc57e057f.fc25.spec index 1e839aeb6a..1eb35d5032 100755 --- a/redhat/self-test/data/centos-df0cc57e057f.fc25.spec +++ b/redhat/self-test/data/centos-df0cc57e057f.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0-6.test.fc25 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/centos-fce15c45d3fb.el7 b/redhat/self-test/data/centos-fce15c45d3fb.el7 index 5c36709fa6..646226c9b9 100644 --- a/redhat/self-test/data/centos-fce15c45d3fb.el7 +++ b/redhat/self-test/data/centos-fce15c45d3fb.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE=-p stream BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/centos-fce15c45d3fb.el7.spec b/redhat/self-test/data/centos-fce15c45d3fb.el7.spec index c255c200a5..02a0be9984 100755 --- a/redhat/self-test/data/centos-fce15c45d3fb.el7.spec +++ b/redhat/self-test/data/centos-fce15c45d3fb.el7.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0-0.rc5.6.test.el7 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/centos-fce15c45d3fb.fc25 b/redhat/self-test/data/centos-fce15c45d3fb.fc25 index 4c02f9d12c..ef5c0eaa8f 100644 --- a/redhat/self-test/data/centos-fce15c45d3fb.fc25 +++ b/redhat/self-test/data/centos-fce15c45d3fb.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE=-p stream BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/centos-fce15c45d3fb.fc25.spec b/redhat/self-test/data/centos-fce15c45d3fb.fc25.spec index 20e1e7324e..42f0da33b8 100755 --- a/redhat/self-test/data/centos-fce15c45d3fb.fc25.spec +++ b/redhat/self-test/data/centos-fce15c45d3fb.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0-0.rc5.6.test.fc25 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/fedora-2585cf9dfaad.el7 b/redhat/self-test/data/fedora-2585cf9dfaad.el7 index 5fe84ea169..302e891e2c 100644 --- a/redhat/self-test/data/fedora-2585cf9dfaad.el7 +++ b/redhat/self-test/data/fedora-2585cf9dfaad.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/fedora-2585cf9dfaad.el7.spec b/redhat/self-test/data/fedora-2585cf9dfaad.el7.spec index d158c48792..5443fd5737 100755 --- a/redhat/self-test/data/fedora-2585cf9dfaad.el7.spec +++ b/redhat/self-test/data/fedora-2585cf9dfaad.el7.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/fedora-2585cf9dfaad.fc25 b/redhat/self-test/data/fedora-2585cf9dfaad.fc25 index 350b094392..f0337a58eb 100644 --- a/redhat/self-test/data/fedora-2585cf9dfaad.fc25 +++ b/redhat/self-test/data/fedora-2585cf9dfaad.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/fedora-2585cf9dfaad.fc25.spec b/redhat/self-test/data/fedora-2585cf9dfaad.fc25.spec index d158c48792..5443fd5737 100755 --- a/redhat/self-test/data/fedora-2585cf9dfaad.fc25.spec +++ b/redhat/self-test/data/fedora-2585cf9dfaad.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/fedora-78e36f3b0dae.el7 b/redhat/self-test/data/fedora-78e36f3b0dae.el7 index ed5129f7ae..0aa3201257 100644 --- a/redhat/self-test/data/fedora-78e36f3b0dae.el7 +++ b/redhat/self-test/data/fedora-78e36f3b0dae.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/fedora-78e36f3b0dae.el7.spec b/redhat/self-test/data/fedora-78e36f3b0dae.el7.spec index 85abba4cdf..5212f2466a 100755 --- a/redhat/self-test/data/fedora-78e36f3b0dae.el7.spec +++ b/redhat/self-test/data/fedora-78e36f3b0dae.el7.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/fedora-78e36f3b0dae.fc25 b/redhat/self-test/data/fedora-78e36f3b0dae.fc25 index cec2cd65e0..95a34047ea 100644 --- a/redhat/self-test/data/fedora-78e36f3b0dae.fc25 +++ b/redhat/self-test/data/fedora-78e36f3b0dae.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/fedora-78e36f3b0dae.fc25.spec b/redhat/self-test/data/fedora-78e36f3b0dae.fc25.spec index 85abba4cdf..5212f2466a 100755 --- a/redhat/self-test/data/fedora-78e36f3b0dae.fc25.spec +++ b/redhat/self-test/data/fedora-78e36f3b0dae.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/fedora-df0cc57e057f.el7 b/redhat/self-test/data/fedora-df0cc57e057f.el7 index 5bed21e9a3..c509299011 100644 --- a/redhat/self-test/data/fedora-df0cc57e057f.el7 +++ b/redhat/self-test/data/fedora-df0cc57e057f.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/fedora-df0cc57e057f.el7.spec b/redhat/self-test/data/fedora-df0cc57e057f.el7.spec index 85abba4cdf..5212f2466a 100755 --- a/redhat/self-test/data/fedora-df0cc57e057f.el7.spec +++ b/redhat/self-test/data/fedora-df0cc57e057f.el7.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/fedora-df0cc57e057f.fc25 b/redhat/self-test/data/fedora-df0cc57e057f.fc25 index 38b284be80..54a1d04614 100644 --- a/redhat/self-test/data/fedora-df0cc57e057f.fc25 +++ b/redhat/self-test/data/fedora-df0cc57e057f.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/fedora-df0cc57e057f.fc25.spec b/redhat/self-test/data/fedora-df0cc57e057f.fc25.spec index 85abba4cdf..5212f2466a 100755 --- a/redhat/self-test/data/fedora-df0cc57e057f.fc25.spec +++ b/redhat/self-test/data/fedora-df0cc57e057f.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/fedora-fce15c45d3fb.el7 b/redhat/self-test/data/fedora-fce15c45d3fb.el7 index ef21513f35..cc35034251 100644 --- a/redhat/self-test/data/fedora-fce15c45d3fb.el7 +++ b/redhat/self-test/data/fedora-fce15c45d3fb.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/fedora-fce15c45d3fb.el7.spec b/redhat/self-test/data/fedora-fce15c45d3fb.el7.spec index d158c48792..5443fd5737 100755 --- a/redhat/self-test/data/fedora-fce15c45d3fb.el7.spec +++ b/redhat/self-test/data/fedora-fce15c45d3fb.el7.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/fedora-fce15c45d3fb.fc25 b/redhat/self-test/data/fedora-fce15c45d3fb.fc25 index 7c55237651..e57c48cd7f 100644 --- a/redhat/self-test/data/fedora-fce15c45d3fb.fc25 +++ b/redhat/self-test/data/fedora-fce15c45d3fb.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/fedora-fce15c45d3fb.fc25.spec b/redhat/self-test/data/fedora-fce15c45d3fb.fc25.spec index d158c48792..5443fd5737 100755 --- a/redhat/self-test/data/fedora-fce15c45d3fb.fc25.spec +++ b/redhat/self-test/data/fedora-fce15c45d3fb.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/rhel-2585cf9dfaad.el7 b/redhat/self-test/data/rhel-2585cf9dfaad.el7 index f735140987..8c245afecc 100644 --- a/redhat/self-test/data/rhel-2585cf9dfaad.el7 +++ b/redhat/self-test/data/rhel-2585cf9dfaad.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/rhel-2585cf9dfaad.el7.spec b/redhat/self-test/data/rhel-2585cf9dfaad.el7.spec index c255c200a5..02a0be9984 100755 --- a/redhat/self-test/data/rhel-2585cf9dfaad.el7.spec +++ b/redhat/self-test/data/rhel-2585cf9dfaad.el7.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0-0.rc5.6.test.el7 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/rhel-2585cf9dfaad.fc25 b/redhat/self-test/data/rhel-2585cf9dfaad.fc25 index 5c4beb09c2..28d8eed8e2 100644 --- a/redhat/self-test/data/rhel-2585cf9dfaad.fc25 +++ b/redhat/self-test/data/rhel-2585cf9dfaad.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/rhel-2585cf9dfaad.fc25.spec b/redhat/self-test/data/rhel-2585cf9dfaad.fc25.spec index 20e1e7324e..42f0da33b8 100755 --- a/redhat/self-test/data/rhel-2585cf9dfaad.fc25.spec +++ b/redhat/self-test/data/rhel-2585cf9dfaad.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0-0.rc5.6.test.fc25 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/rhel-78e36f3b0dae.el7 b/redhat/self-test/data/rhel-78e36f3b0dae.el7 index c34f65b9b5..9d170d424b 100644 --- a/redhat/self-test/data/rhel-78e36f3b0dae.el7 +++ b/redhat/self-test/data/rhel-78e36f3b0dae.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/rhel-78e36f3b0dae.el7.spec b/redhat/self-test/data/rhel-78e36f3b0dae.el7.spec index ba0aae6174..4e32bdc437 100755 --- a/redhat/self-test/data/rhel-78e36f3b0dae.el7.spec +++ b/redhat/self-test/data/rhel-78e36f3b0dae.el7.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0-6.test.el7 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/rhel-78e36f3b0dae.fc25 b/redhat/self-test/data/rhel-78e36f3b0dae.fc25 index aa172de975..a12e142cdd 100644 --- a/redhat/self-test/data/rhel-78e36f3b0dae.fc25 +++ b/redhat/self-test/data/rhel-78e36f3b0dae.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/rhel-78e36f3b0dae.fc25.spec b/redhat/self-test/data/rhel-78e36f3b0dae.fc25.spec index 1e839aeb6a..1eb35d5032 100755 --- a/redhat/self-test/data/rhel-78e36f3b0dae.fc25.spec +++ b/redhat/self-test/data/rhel-78e36f3b0dae.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0-6.test.fc25 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/rhel-df0cc57e057f.el7 b/redhat/self-test/data/rhel-df0cc57e057f.el7 index cd194fb65b..9e151f5dc2 100644 --- a/redhat/self-test/data/rhel-df0cc57e057f.el7 +++ b/redhat/self-test/data/rhel-df0cc57e057f.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/rhel-df0cc57e057f.el7.spec b/redhat/self-test/data/rhel-df0cc57e057f.el7.spec index ba0aae6174..4e32bdc437 100755 --- a/redhat/self-test/data/rhel-df0cc57e057f.el7.spec +++ b/redhat/self-test/data/rhel-df0cc57e057f.el7.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0-6.test.el7 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/rhel-df0cc57e057f.fc25 b/redhat/self-test/data/rhel-df0cc57e057f.fc25 index 49930737ad..ded150c223 100644 --- a/redhat/self-test/data/rhel-df0cc57e057f.fc25 +++ b/redhat/self-test/data/rhel-df0cc57e057f.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/rhel-df0cc57e057f.fc25.spec b/redhat/self-test/data/rhel-df0cc57e057f.fc25.spec index 1e839aeb6a..1eb35d5032 100755 --- a/redhat/self-test/data/rhel-df0cc57e057f.fc25.spec +++ b/redhat/self-test/data/rhel-df0cc57e057f.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 6%{?buildid}%{?dist} %define kabiversion 5.16.0-6.test.fc25 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-6.test] diff --git a/redhat/self-test/data/rhel-fce15c45d3fb.el7 b/redhat/self-test/data/rhel-fce15c45d3fb.el7 index 97147e8a6b..b3f5816e5a 100644 --- a/redhat/self-test/data/rhel-fce15c45d3fb.el7 +++ b/redhat/self-test/data/rhel-fce15c45d3fb.el7 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/rhel-fce15c45d3fb.el7.spec b/redhat/self-test/data/rhel-fce15c45d3fb.el7.spec index c255c200a5..02a0be9984 100755 --- a/redhat/self-test/data/rhel-fce15c45d3fb.el7.spec +++ b/redhat/self-test/data/rhel-fce15c45d3fb.el7.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0-0.rc5.6.test.el7 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/redhat/self-test/data/rhel-fce15c45d3fb.fc25 b/redhat/self-test/data/rhel-fce15c45d3fb.fc25 index e9f25e13ab..6e9be11d34 100644 --- a/redhat/self-test/data/rhel-fce15c45d3fb.fc25 +++ b/redhat/self-test/data/rhel-fce15c45d3fb.fc25 @@ -5,11 +5,11 @@ ARCH_LIST=aarch64 ppc64le s390x x86_64 riscv64 AUTOMOTIVE_BUILD= AUTOMOTIVE_MAJOR=2 AUTOMOTIVE_MINOR=0 -AUTOMOTIVE_PKG_DIST=.el10iv +AUTOMOTIVE_PKG_DIST=.el10_2iv AUTOMOTIVE_PKG_NAME=kernel-automotive BASEVERSION=5.16.0-0.rc5.6.test BUILD=6 -BUILDOPTS= +BUILDOPTS=+kabidupchk BUILD_FLAGS= BUILD_PROFILE= BUILD_PROFILE_USERDEF= @@ -108,7 +108,7 @@ UPSTREAMBUILD_GIT_ONLY= UPSTREAM_BRANCH=v6.12 UPSTREAM_TARBALL_NAME=5.16-rc5 VERSION_ON_UPSTREAM=0 -YSTREAM_FLAG=yes -ZSTREAM=no -ZSTREAM_FLAG=no +YSTREAM_FLAG=no +ZSTREAM=yes +ZSTREAM_FLAG=yes _OUTPUT=.. diff --git a/redhat/self-test/data/rhel-fce15c45d3fb.fc25.spec b/redhat/self-test/data/rhel-fce15c45d3fb.fc25.spec index 20e1e7324e..42f0da33b8 100755 --- a/redhat/self-test/data/rhel-fce15c45d3fb.fc25.spec +++ b/redhat/self-test/data/rhel-fce15c45d3fb.fc25.spec @@ -17,4 +17,5 @@ %define specrelease 0.rc5.6%{?buildid}%{?dist} %define kabiversion 5.16.0-0.rc5.6.test.fc25 %define selftests_must_build 0 +%define _with_kabidupchk 1 Mon Mar 28 2022 Fedora Kernel Team [5.16.0-0.rc5.6.test] diff --git a/security/keys/trusted-keys/trusted_tpm2.c b/security/keys/trusted-keys/trusted_tpm2.c index 024be26270..76a86f8a8d 100644 --- a/security/keys/trusted-keys/trusted_tpm2.c +++ b/security/keys/trusted-keys/trusted_tpm2.c @@ -387,6 +387,7 @@ static int tpm2_load_cmd(struct tpm_chip *chip, struct trusted_key_options *options, u32 *blob_handle) { + u8 *blob_ref __free(kfree) = NULL; struct tpm_buf buf; unsigned int private_len; unsigned int public_len; @@ -400,6 +401,9 @@ static int tpm2_load_cmd(struct tpm_chip *chip, /* old form */ blob = payload->blob; payload->old_format = 1; + } else { + /* Bind for cleanup: */ + blob_ref = blob; } /* new format carries keyhandle but old format doesn't */ @@ -464,8 +468,6 @@ static int tpm2_load_cmd(struct tpm_chip *chip, (__be32 *) &buf.data[TPM_HEADER_SIZE]); out: - if (blob != payload->blob) - kfree(blob); tpm_buf_destroy(&buf); if (rc > 0) diff --git a/tools/lib/perf/Makefile b/tools/lib/perf/Makefile index 7fbb50b74c..5c64122bf5 100644 --- a/tools/lib/perf/Makefile +++ b/tools/lib/perf/Makefile @@ -51,9 +51,9 @@ INCLUDES = \ -I$(srctree)/tools/include/uapi # Append required CFLAGS +override CFLAGS := $(INCLUDES) $(CFLAGS) override CFLAGS += -g -Werror -Wall override CFLAGS += -fPIC -override CFLAGS += $(INCLUDES) override CFLAGS += -fvisibility=hidden override CFLAGS += $(EXTRA_WARNINGS) override CFLAGS += $(EXTRA_CFLAGS) diff --git a/uki-addons.sbat b/uki-addons.sbat index f22bde95f1..2a69443b7e 100644 --- a/uki-addons.sbat +++ b/uki-addons.sbat @@ -1,2 +1,2 @@ sbat,1,SBAT Version,sbat,1,https://github.com/rhboot/shim/blob/main/SBAT.md -kernel-uki-virt-addons.almalinux,1,AlmaLinux,kernel-uki-virt-addons,6.12.0-211.34.1.el10.x86_64,mailto:security@almalinux.org +kernel-uki-virt-addons.almalinux,1,AlmaLinux,kernel-uki-virt-addons,6.12.0-211.37.1.el10.x86_64,mailto:security@almalinux.org diff --git a/uki.sbat b/uki.sbat index a27d1c4f5c..5bedb947cf 100644 --- a/uki.sbat +++ b/uki.sbat @@ -1,2 +1,2 @@ sbat,1,SBAT Version,sbat,1,https://github.com/rhboot/shim/blob/main/SBAT.md -kernel-uki-virt.almalinux,1,AlmaLinux,kernel-uki-virt,6.12.0-211.34.1.el10.x86_64,mailto:security@almalinux.org +kernel-uki-virt.almalinux,1,AlmaLinux,kernel-uki-virt,6.12.0-211.37.1.el10.x86_64,mailto:security@almalinux.org