Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
3485aa0
sctp: purge outqueue on stale COOKIE-ECHO handling
PlaidCat Aug 27, 2026
76bd719
netfilter: nft_set_pipapo_avx2: don't return non-matching entry on ex…
PlaidCat Aug 27, 2026
430a49e
ip6_tunnel: use skb_vlan_inet_prepare() in __ip6_tnl_rcv()
PlaidCat Aug 27, 2026
74715d7
zram: fix use-after-free in zram_bvec_write_partial()
PlaidCat Aug 27, 2026
7502766
sctp: Hold RCU read lock while iterating over address list
PlaidCat Aug 27, 2026
9b6fa0e
sctp: Prevent TOCTOU out-of-bounds write
PlaidCat Aug 27, 2026
fa0b979
sctp: Hold sock lock while iterating over address list
PlaidCat Aug 27, 2026
c5a06fc
ksm: use range-walk function to jump over holes in scan_get_next_rmap…
PlaidCat Aug 27, 2026
452ee16
netfilter: conntrack_irc: fix possible out-of-bounds read
PlaidCat Aug 27, 2026
573ca40
netfilter: xt_policy: fix strict mode inbound policy matching
PlaidCat Aug 27, 2026
e4c796f
netfilter: require Ethernet MAC header before using eth_hdr()
PlaidCat Aug 27, 2026
9cae0f1
i2c: stub: Reject I2C block transfers with invalid length
PlaidCat Aug 27, 2026
1dfc0b6
s390/ap: Use all-bits-one apmask/aqmask for vfio in_use() checks
PlaidCat Aug 27, 2026
9ddc85f
s390/ap: Support driver_override for AP queue devices
PlaidCat Aug 27, 2026
18f8ab4
s390/ap: Rename mutex ap_perms_mutex to ap_attr_mutex
PlaidCat Aug 27, 2026
5cd2aff
s390/ap: Restrict driver_override versus apmask and aqmask use
PlaidCat Aug 27, 2026
617ebf5
Rebuild rocky9_8 with kernel-5.14.0-687.42.1.el9_8
PlaidCat Aug 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
2 changes: 1 addition & 1 deletion Makefile.rhelver
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ RHEL_MINOR = 8
#
# Use this spot to avoid future merge conflicts.
# Do not trim this comment.
RHEL_RELEASE = 687.41.1
RHEL_RELEASE = 687.42.1

#
# ZSTREAM
Expand Down
182 changes: 182 additions & 0 deletions ciq/ciq_backports/kernel-5.14.0-687.42.1.el9_8/46030379.failed
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
s390/ap: Restrict driver_override versus apmask and aqmask use

jira KERNEL-1530
Rebuild_History Non-Buildable kernel-5.14.0-687.42.1.el9_8
commit-author Harald Freudenberger <freude@linux.ibm.com>
commit 46030379f13c3f07c699dcaf034a50f023f77925
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-687.42.1.el9_8/46030379.failed

Introduce a restriction for the driver_override feature versus apmask
and aqmask:
- driver_override is only allowed when the apmask and aqmask values
both are default (=0xffff..ffff).
- apmask and aqmask modifications are only allowed when there is no
driver_override on any AP device active.
So in the end the user is restricted to choose to either use
apmask/apmask to divide the AP devices into host owned and vfio owned
or use the driver_override feature but not mix these two approaches.

Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Reviewed-by: Holger Dengler <dengler@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
(cherry picked from commit 46030379f13c3f07c699dcaf034a50f023f77925)
Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
# drivers/s390/crypto/ap_bus.c
# drivers/s390/crypto/ap_bus.h
# drivers/s390/crypto/ap_queue.c
diff --cc drivers/s390/crypto/ap_bus.c
index bcb69c6f5eb7,e4bd4f79aaa3..000000000000
--- a/drivers/s390/crypto/ap_bus.c
+++ b/drivers/s390/crypto/ap_bus.c
@@@ -83,8 -86,17 +83,22 @@@ DEFINE_SPINLOCK(ap_queues_lock)
/* Default permissions (ioctl, card and domain masking) */
struct ap_perms ap_perms;
EXPORT_SYMBOL(ap_perms);
++<<<<<<< HEAD
+DEFINE_MUTEX(ap_perms_mutex);
+EXPORT_SYMBOL(ap_perms_mutex);
++=======
+ /* true if apmask and/or aqmask are NOT default */
+ bool ap_apmask_aqmask_in_use;
+ /* counter for how many driver_overrides are currently active */
+ int ap_driver_override_ctr;
+ /*
+ * Mutex for consistent read and write of the ap_perms struct,
+ * ap_apmask_aqmask_in_use, ap_driver_override_ctr
+ * and the ap bus sysfs attributes apmask and aqmask.
+ */
+ DEFINE_MUTEX(ap_attr_mutex);
+ EXPORT_SYMBOL(ap_attr_mutex);
++>>>>>>> 46030379f13c (s390/ap: Restrict driver_override versus apmask and aqmask use)

/* # of bindings complete since init */
static atomic64_t ap_bindings_complete_count = ATOMIC64_INIT(0);
@@@ -1433,12 -1562,16 +1456,16 @@@ static int apmask_commit(unsigned long
static ssize_t apmask_store(const struct bus_type *bus, const char *buf,
size_t count)
{
- int rc, changes = 0;
DECLARE_BITMAP(newapm, AP_DEVICES);
+ int rc = -EINVAL, changes = 0;

- if (mutex_lock_interruptible(&ap_attr_mutex))
+ if (mutex_lock_interruptible(&ap_perms_mutex))
return -ERESTARTSYS;

+ /* Do not allow apmask/aqmask if driver override is active */
+ if (ap_driver_override_ctr)
+ goto done;
+
rc = ap_parse_bitmap_str(buf, ap_perms.apm, AP_DEVICES, newapm);
if (rc)
goto done;
@@@ -1527,12 -1669,16 +1563,16 @@@ static int aqmask_commit(unsigned long
static ssize_t aqmask_store(const struct bus_type *bus, const char *buf,
size_t count)
{
- int rc, changes = 0;
DECLARE_BITMAP(newaqm, AP_DOMAINS);
+ int rc = -EINVAL, changes = 0;

- if (mutex_lock_interruptible(&ap_attr_mutex))
+ if (mutex_lock_interruptible(&ap_perms_mutex))
return -ERESTARTSYS;

+ /* Do not allow apmask/aqmask if driver override is active */
+ if (ap_driver_override_ctr)
+ goto done;
+
rc = ap_parse_bitmap_str(buf, ap_perms.aqm, AP_DOMAINS, newaqm);
if (rc)
goto done;
diff --cc drivers/s390/crypto/ap_bus.h
index f4622ee4d894,51e08f27bd75..000000000000
--- a/drivers/s390/crypto/ap_bus.h
+++ b/drivers/s390/crypto/ap_bus.h
@@@ -292,7 -281,9 +292,13 @@@ struct ap_perms
};

extern struct ap_perms ap_perms;
++<<<<<<< HEAD
+extern struct mutex ap_perms_mutex;
++=======
+ extern bool ap_apmask_aqmask_in_use;
+ extern int ap_driver_override_ctr;
+ extern struct mutex ap_attr_mutex;
++>>>>>>> 46030379f13c (s390/ap: Restrict driver_override versus apmask and aqmask use)

/*
* Get ap_queue device for this qid.
diff --cc drivers/s390/crypto/ap_queue.c
index dcd1590c0f81,4fe443d30f9b..000000000000
--- a/drivers/s390/crypto/ap_queue.c
+++ b/drivers/s390/crypto/ap_queue.c
@@@ -713,6 -731,58 +713,61 @@@ static ssize_t ap_functions_show(struc

static DEVICE_ATTR_RO(ap_functions);

++<<<<<<< HEAD
++=======
+ static ssize_t driver_override_show(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+ {
+ struct ap_queue *aq = to_ap_queue(dev);
+ struct ap_device *ap_dev = &aq->ap_dev;
+ int rc;
+
+ device_lock(dev);
+ if (ap_dev->driver_override)
+ rc = sysfs_emit(buf, "%s\n", ap_dev->driver_override);
+ else
+ rc = sysfs_emit(buf, "\n");
+ device_unlock(dev);
+
+ return rc;
+ }
+
+ static ssize_t driver_override_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+ {
+ struct ap_queue *aq = to_ap_queue(dev);
+ struct ap_device *ap_dev = &aq->ap_dev;
+ int rc = -EINVAL;
+ bool old_value;
+
+ if (mutex_lock_interruptible(&ap_attr_mutex))
+ return -ERESTARTSYS;
+
+ /* Do not allow driver override if apmask/aqmask is in use */
+ if (ap_apmask_aqmask_in_use)
+ goto out;
+
+ old_value = ap_dev->driver_override ? true : false;
+ rc = driver_set_override(dev, &ap_dev->driver_override, buf, count);
+ if (rc)
+ goto out;
+ if (old_value && !ap_dev->driver_override)
+ --ap_driver_override_ctr;
+ else if (!old_value && ap_dev->driver_override)
+ ++ap_driver_override_ctr;
+
+ rc = count;
+
+ out:
+ mutex_unlock(&ap_attr_mutex);
+ return rc;
+ }
+
+ static DEVICE_ATTR_RW(driver_override);
+
++>>>>>>> 46030379f13c (s390/ap: Restrict driver_override versus apmask and aqmask use)
#ifdef CONFIG_AP_DEBUG
static ssize_t states_show(struct device *dev,
struct device_attribute *attr, char *buf)
* Unmerged path drivers/s390/crypto/ap_bus.c
* Unmerged path drivers/s390/crypto/ap_bus.h
* Unmerged path drivers/s390/crypto/ap_queue.c
Loading
Loading