Import of kernel-4.18.0-553.63.1.el8_10

This commit is contained in:
eabdullin 2025-09-05 12:22:09 +00:00
parent 11c08197f9
commit ab554a9950
16 changed files with 92 additions and 13 deletions

View File

@ -20,4 +20,10 @@ config RH_KABI_SIZE_ALIGN_CHECKS
This option enables more stringent kabi checks. Those must be disable This option enables more stringent kabi checks. Those must be disable
in case of a debug-build because they allow to change struct sizes. in case of a debug-build because they allow to change struct sizes.
config RH_KABI_STABLE_ASM_OFFSETS
bool "Enables asm-offsets.c constant stabilization"
default n
help
This option extends check-kabi to test a subset of asm-offsets.c
constants.

View File

@ -12,7 +12,7 @@ RHEL_MINOR = 10
# #
# Use this spot to avoid future merge conflicts. # Use this spot to avoid future merge conflicts.
# Do not trim this comment. # Do not trim this comment.
RHEL_RELEASE = 553.62.1 RHEL_RELEASE = 553.63.1
# #
# ZSTREAM # ZSTREAM

View File

@ -5991,3 +5991,4 @@ CONFIG_OBJAGG=m
# #
CONFIG_RHEL_DIFFERENCES=y CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RH_KABI_SIZE_ALIGN_CHECKS is not set # CONFIG_RH_KABI_SIZE_ALIGN_CHECKS is not set
# CONFIG_RH_KABI_STABLE_ASM_OFFSETS is not set

View File

@ -5963,3 +5963,4 @@ CONFIG_OBJAGG=m
# #
CONFIG_RHEL_DIFFERENCES=y CONFIG_RHEL_DIFFERENCES=y
CONFIG_RH_KABI_SIZE_ALIGN_CHECKS=y CONFIG_RH_KABI_SIZE_ALIGN_CHECKS=y
CONFIG_RH_KABI_STABLE_ASM_OFFSETS=y

View File

@ -6398,3 +6398,4 @@ CONFIG_KVM_XIVE=y
# #
CONFIG_RHEL_DIFFERENCES=y CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RH_KABI_SIZE_ALIGN_CHECKS is not set # CONFIG_RH_KABI_SIZE_ALIGN_CHECKS is not set
# CONFIG_RH_KABI_STABLE_ASM_OFFSETS is not set

View File

@ -6354,3 +6354,4 @@ CONFIG_KVM_XIVE=y
# #
CONFIG_RHEL_DIFFERENCES=y CONFIG_RHEL_DIFFERENCES=y
CONFIG_RH_KABI_SIZE_ALIGN_CHECKS=y CONFIG_RH_KABI_SIZE_ALIGN_CHECKS=y
CONFIG_RH_KABI_STABLE_ASM_OFFSETS=y

View File

@ -3564,3 +3564,4 @@ CONFIG_S390_GUEST=y
# #
CONFIG_RHEL_DIFFERENCES=y CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RH_KABI_SIZE_ALIGN_CHECKS is not set # CONFIG_RH_KABI_SIZE_ALIGN_CHECKS is not set
# CONFIG_RH_KABI_STABLE_ASM_OFFSETS is not set

View File

@ -1489,3 +1489,4 @@ CONFIG_HAVE_KVM=y
# #
CONFIG_RHEL_DIFFERENCES=y CONFIG_RHEL_DIFFERENCES=y
CONFIG_RH_KABI_SIZE_ALIGN_CHECKS=y CONFIG_RH_KABI_SIZE_ALIGN_CHECKS=y
# CONFIG_RH_KABI_STABLE_ASM_OFFSETS is not set

View File

@ -3540,3 +3540,4 @@ CONFIG_S390_GUEST=y
# #
CONFIG_RHEL_DIFFERENCES=y CONFIG_RHEL_DIFFERENCES=y
CONFIG_RH_KABI_SIZE_ALIGN_CHECKS=y CONFIG_RH_KABI_SIZE_ALIGN_CHECKS=y
CONFIG_RH_KABI_STABLE_ASM_OFFSETS=y

View File

@ -8280,3 +8280,4 @@ CONFIG_OBJAGG=m
# #
CONFIG_RHEL_DIFFERENCES=y CONFIG_RHEL_DIFFERENCES=y
# CONFIG_RH_KABI_SIZE_ALIGN_CHECKS is not set # CONFIG_RH_KABI_SIZE_ALIGN_CHECKS is not set
# CONFIG_RH_KABI_STABLE_ASM_OFFSETS is not set

View File

@ -8221,3 +8221,4 @@ CONFIG_OBJAGG=m
# #
CONFIG_RHEL_DIFFERENCES=y CONFIG_RHEL_DIFFERENCES=y
CONFIG_RH_KABI_SIZE_ALIGN_CHECKS=y CONFIG_RH_KABI_SIZE_ALIGN_CHECKS=y
CONFIG_RH_KABI_STABLE_ASM_OFFSETS=y

View File

@ -178,6 +178,7 @@ static int ch9200_mdio_read(struct net_device *netdev, int phy_id, int loc)
{ {
struct usbnet *dev = netdev_priv(netdev); struct usbnet *dev = netdev_priv(netdev);
unsigned char buff[2]; unsigned char buff[2];
int ret;
netdev_dbg(netdev, "%s phy_id:%02x loc:%02x\n", netdev_dbg(netdev, "%s phy_id:%02x loc:%02x\n",
__func__, phy_id, loc); __func__, phy_id, loc);
@ -185,8 +186,10 @@ static int ch9200_mdio_read(struct net_device *netdev, int phy_id, int loc)
if (phy_id != 0) if (phy_id != 0)
return -ENODEV; return -ENODEV;
control_read(dev, REQUEST_READ, 0, loc * 2, buff, 0x02, ret = control_read(dev, REQUEST_READ, 0, loc * 2, buff, 0x02,
CONTROL_TIMEOUT_MS); CONTROL_TIMEOUT_MS);
if (ret < 0)
return ret;
return (buff[0] | buff[1] << 8); return (buff[0] | buff[1] << 8);
} }

View File

@ -2923,11 +2923,23 @@ static int validate_lock_args(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb->lkb_timeout_cs = args->timeout; lkb->lkb_timeout_cs = args->timeout;
rv = 0; rv = 0;
out: out:
if (rv) switch (rv) {
log_debug(ls, "validate_lock_args %d %x %x %x %d %d %s", case 0:
break;
case -EINVAL:
/* annoy the user because dlm usage is wrong */
WARN_ON(1);
log_error(ls, "%s %d %x %x %x %d %d", __func__,
rv, lkb->lkb_id, lkb->lkb_flags, args->flags, rv, lkb->lkb_id, lkb->lkb_flags, args->flags,
lkb->lkb_status, lkb->lkb_wait_type, lkb->lkb_status, lkb->lkb_wait_type);
lkb->lkb_resource->res_name); break;
default:
log_debug(ls, "%s %d %x %x %x %d %d", __func__,
rv, lkb->lkb_id, lkb->lkb_flags, args->flags,
lkb->lkb_status, lkb->lkb_wait_type);
break;
}
return rv; return rv;
} }
@ -3060,11 +3072,25 @@ static int validate_unlock_args(struct dlm_lkb *lkb, struct dlm_args *args)
lkb->lkb_astparam = args->astparam; lkb->lkb_astparam = args->astparam;
rv = 0; rv = 0;
out: out:
if (rv) switch (rv) {
log_debug(ls, "validate_unlock_args %d %x %x %x %x %d %s", rv, case 0:
break;
case -EINVAL:
/* annoy the user because dlm usage is wrong */
WARN_ON(1);
log_error(ls, "%s %d %x %x %x %x %d %s", __func__, rv,
lkb->lkb_id, lkb->lkb_flags, lkb->lkb_exflags, lkb->lkb_id, lkb->lkb_flags, lkb->lkb_exflags,
args->flags, lkb->lkb_wait_type, args->flags, lkb->lkb_wait_type,
lkb->lkb_resource->res_name); lkb->lkb_resource->res_name);
break;
default:
log_debug(ls, "%s %d %x %x %x %x %d %s", __func__, rv,
lkb->lkb_id, lkb->lkb_flags, lkb->lkb_exflags,
args->flags, lkb->lkb_wait_type,
lkb->lkb_resource->res_name);
break;
}
return rv; return rv;
} }

View File

@ -348,6 +348,11 @@
* Adds a new field to an enumeration type. This must always be added to * Adds a new field to an enumeration type. This must always be added to
* the end of the enum. Before using this macro, make sure this is actually * the end of the enum. Before using this macro, make sure this is actually
* safe to do. * safe to do.
*
* RH_KABI_ASSERT_EQ_CONST
* RH_KABI_ASSERT_EQ_CONSTEXPR
* Static assertion equality check against a C preprocessor (or a C constant
* expression).
*/ */
#undef linux #undef linux
@ -512,4 +517,22 @@
(_ptr)->_struct##_size_rh > __off ? true : false; \ (_ptr)->_struct##_size_rh > __off ? true : false; \
}) })
#if IS_BUILTIN(CONFIG_RH_KABI_STABLE_ASM_OFFSETS)
# define RH_KABI_ASSERT_EQ_CONSTEXPR(kind, sym, expval, val) { \
typedef char kind; \
kind (*expected)[expval]; \
kind (*actual)[val]; \
_Static_assert((expval) == (val), "unexpected value of " sym); \
expected = actual = NULL; \
}
# define RH_KABI_ASSERT_EQ_CONST(expval, val) \
_Static_assert((expval) == (val), \
"unexpected value of " #val " (" \
"actual: " __stringify(val) ", " \
"expected: " __stringify(expval) ")")
#else
# define RH_KABI_ASSERT_EQ_CONSTEXPR(kind, sym, expval, val)
# define RH_KABI_ASSERT_EQ_CONST(expval, val)
#endif
#endif /* _LINUX_RH_KABI_H */ #endif /* _LINUX_RH_KABI_H */

View File

@ -1098,6 +1098,7 @@ start_over:
goto check_out; goto check_out;
pr_debug("scan_swap_map of si %d failed to find offset\n", pr_debug("scan_swap_map of si %d failed to find offset\n",
si->type); si->type);
cond_resched();
spin_lock(&swap_avail_lock); spin_lock(&swap_avail_lock);
nextsi: nextsi:

View File

@ -717,21 +717,31 @@ static bool reqsk_queue_unlink(struct request_sock *req)
found = __sk_nulls_del_node_init_rcu(req_to_sk(req)); found = __sk_nulls_del_node_init_rcu(req_to_sk(req));
spin_unlock(lock); spin_unlock(lock);
} }
if (timer_pending(&req->rsk_timer) && del_timer_sync(&req->rsk_timer))
reqsk_put(req);
return found; return found;
} }
bool inet_csk_reqsk_queue_drop(struct sock *sk, struct request_sock *req) static bool __inet_csk_reqsk_queue_drop(struct sock *sk,
struct request_sock *req,
bool from_timer)
{ {
bool unlinked = reqsk_queue_unlink(req); bool unlinked = reqsk_queue_unlink(req);
if (!from_timer && timer_delete_sync(&req->rsk_timer))
reqsk_put(req);
if (unlinked) { if (unlinked) {
reqsk_queue_removed(&inet_csk(sk)->icsk_accept_queue, req); reqsk_queue_removed(&inet_csk(sk)->icsk_accept_queue, req);
reqsk_put(req); reqsk_put(req);
} }
return unlinked; return unlinked;
} }
bool inet_csk_reqsk_queue_drop(struct sock *sk, struct request_sock *req)
{
return __inet_csk_reqsk_queue_drop(sk, req, false);
}
EXPORT_SYMBOL(inet_csk_reqsk_queue_drop); EXPORT_SYMBOL(inet_csk_reqsk_queue_drop);
void inet_csk_reqsk_queue_drop_and_put(struct sock *sk, struct request_sock *req) void inet_csk_reqsk_queue_drop_and_put(struct sock *sk, struct request_sock *req)
@ -804,7 +814,8 @@ static void reqsk_timer_handler(struct timer_list *t)
return; return;
} }
drop: drop:
inet_csk_reqsk_queue_drop_and_put(sk_listener, req); __inet_csk_reqsk_queue_drop(sk_listener, req, true);
reqsk_put(req);
} }
static void reqsk_queue_hash_req(struct request_sock *req, static void reqsk_queue_hash_req(struct request_sock *req,