Projects
openEuler:20.03:LTS:SP1
kernel
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 350
View file
_service:tar_scm_kernel_repo:kernel.spec
Changed
@@ -12,7 +12,7 @@ %global KernelVer %{version}-%{release}.%{_target_cpu} -%global hulkrelease 2402.1.0 +%global hulkrelease 2402.4.0 %define with_patch 0 @@ -32,7 +32,7 @@ Name: kernel Version: 4.19.90 -Release: %{hulkrelease}.0237 +Release: %{hulkrelease}.0238 Summary: Linux Kernel License: GPLv2 URL: http://www.kernel.org/ @@ -809,6 +809,29 @@ %changelog +* Mon Feb 05 2024 Zhang Changzhong <zhangchangzhong@huawei.com> - 4.19.90-2402.4.0.0238 +- !4454 netfilter: nf_tables: reject QUEUE/DROP verdict parameters +- netfilter: nf_tables: reject QUEUE/DROP verdict parameters +- !4411 v2 drm/atomic: Fix potential use-after-free in nonblocking commits +- !4412 v3 Save and restore msg_namelen in sock_sendmsg +- net: Save and restore msg_namelen in sock_sendmsg +- net: prevent rewrite of msg_name in sock_sendmsg() +- !4399 net: dst: Optimized route gc +- drm/atomic: Fix potential use-after-free in nonblocking commits +- !4392 linux-4.19.y inclusion +- !4369 mm/filemap: avoid buffered read/write race to read inconsistent data +- net/dst: use a smaller percpu_counter batch for dst entries accounting +- net: add a route cache full diagnostic message +- net: check dev->gso_max_size in gso_features_check() +- net: warn if gso_type isn't set for a GSO SKB +- mm: fix unmap_mapping_range high bits shift bug +- x86/alternatives: Sync core before enabling interrupts +- mm/filemap: avoid buffered read/write race to read inconsistent data +- !4360 net/sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner curve +- !4320 io_uring/af_unix: disable sending io_uring over sockets +- net/sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner curve +- io_uring/af_unix: disable sending io_uring over sockets + * Tue Jan 30 2024 Zhang Changzhong <zhangchangzhong@huawei.com> - 4.19.90-2402.1.0.0237 - !4277 fs:/dcache.c: fix negative dentry limit not complete problem - !4288 net/rds: Fix UBSAN: array-index-out-of-bounds in rds_cmsg_recv
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/arch/x86/kernel/alternative.c
Changed
@@ -722,8 +722,8 @@ } else { local_irq_save(flags); memcpy(addr, opcode, len); - local_irq_restore(flags); sync_core(); + local_irq_restore(flags); /* * Could also do a CLFLUSH here to speed up CPU recovery; but
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/drivers/gpu/drm/drm_atomic.c
Changed
@@ -91,6 +91,12 @@ if (!state->planes) goto fail; + /* + * Because drm_atomic_state can be committed asynchronously we need our + * own reference and cannot rely on the on implied by drm_file in the + * ioctl call. + */ + drm_dev_get(dev); state->dev = dev; DRM_DEBUG_ATOMIC("Allocated atomic state %p\n", state); @@ -250,7 +256,8 @@ void __drm_atomic_state_free(struct kref *ref) { struct drm_atomic_state *state = container_of(ref, typeof(*state), ref); - struct drm_mode_config *config = &state->dev->mode_config; + struct drm_device *dev = state->dev; + struct drm_mode_config *config = &dev->mode_config; drm_atomic_state_clear(state); @@ -262,6 +269,8 @@ drm_atomic_state_default_release(state); kfree(state); } + + drm_dev_put(dev); } EXPORT_SYMBOL(__drm_atomic_state_free);
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/fs/io_uring.c
Changed
@@ -7220,49 +7220,6 @@ return ret; } -static int io_sqe_file_register(struct io_ring_ctx *ctx, struct file *file, - int index) -{ -#if defined(CONFIG_UNIX) - struct sock *sock = ctx->ring_sock->sk; - struct sk_buff_head *head = &sock->sk_receive_queue; - struct sk_buff *skb; - - /* - * See if we can merge this file into an existing skb SCM_RIGHTS - * file set. If there's no room, fall back to allocating a new skb - * and filling it in. - */ - spin_lock_irq(&head->lock); - skb = skb_peek(head); - if (skb) { - struct scm_fp_list *fpl = UNIXCB(skb).fp; - - if (fpl->count < SCM_MAX_FD) { - __skb_unlink(skb, head); - spin_unlock_irq(&head->lock); - fpl->fp[fpl->count] = get_file(file); - unix_inflight(fpl->user, fpl->fp[fpl->count]); - fpl->count++; - spin_lock_irq(&head->lock); - __skb_queue_head(head, skb); - } else { - skb = NULL; - } - } - spin_unlock_irq(&head->lock); - - if (skb) { - fput(file); - return 0; - } - - return __io_sqe_files_scm(ctx, 1, index); -#else - return 0; -#endif -} - static int io_queue_file_removal(struct fixed_file_data *data, struct file *file) { @@ -7342,12 +7299,6 @@ break; } table->files[index] = file; - err = io_sqe_file_register(ctx, file, i); - if (err) { - table->files[index] = NULL; - fput(file); - break; - } } nr_args--; done++;
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/include/net/dst_ops.h
Changed
@@ -63,9 +63,11 @@ return percpu_counter_sum_positive(&dst->pcpuc_entries); } +#define DST_PERCPU_COUNTER_BATCH 32 static inline void dst_entries_add(struct dst_ops *dst, int val) { - percpu_counter_add(&dst->pcpuc_entries, val); + percpu_counter_add_batch(&dst->pcpuc_entries, val, + DST_PERCPU_COUNTER_BATCH); } static inline int dst_entries_init(struct dst_ops *dst)
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/mm/filemap.c
Changed
@@ -2273,6 +2273,15 @@ } nr = nr - offset; + /* + * Pairs with a barrier in + * block_write_end()->mark_buffer_dirty() or other page + * dirtying routines like iomap_write_end() to ensure + * changes to page contents are visible before we see + * increased inode size. + */ + smp_rmb(); + /* If users can be writing to this page using arbitrary * virtual addresses, take care about potential aliasing * before reading the page on the kernel side.
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/mm/memory.c
Changed
@@ -2891,8 +2891,8 @@ void unmap_mapping_range(struct address_space *mapping, loff_t const holebegin, loff_t const holelen, int even_cows) { - pgoff_t hba = holebegin >> PAGE_SHIFT; - pgoff_t hlen = (holelen + PAGE_SIZE - 1) >> PAGE_SHIFT; + pgoff_t hba = (pgoff_t)(holebegin) >> PAGE_SHIFT; + pgoff_t hlen = ((pgoff_t)(holelen) + PAGE_SIZE - 1) >> PAGE_SHIFT; /* Check for overflow. */ if (sizeof(holelen) > sizeof(hlen)) {
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/net/core/dev.c
Changed
@@ -3196,6 +3196,14 @@ if (gso_segs > dev->gso_max_segs) return features & ~NETIF_F_GSO_MASK; + if (unlikely(skb->len >= READ_ONCE(dev->gso_max_size))) + return features & ~NETIF_F_GSO_MASK; + + if (!skb_shinfo(skb)->gso_type) { + skb_warn_bad_offload(skb); + return features & ~NETIF_F_GSO_MASK; + } + /* Support for GSO partial features requires software * intervention before we can actually process the packets * so we need to strip support for any partial features now
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/net/core/dst.c
Changed
@@ -97,9 +97,13 @@ { struct dst_entry *dst; - if (ops->gc && dst_entries_get_fast(ops) > ops->gc_thresh) { - if (ops->gc(ops)) + if (ops->gc && + !(flags & DST_NOCOUNT) && + dst_entries_get_fast(ops) > ops->gc_thresh) { + if (ops->gc(ops)) { + pr_notice_ratelimited("Route cache is full: consider increasing sysctl net.ipv6.route.max_size.\n"); return NULL; + } } dst = kmem_cache_alloc(ops->kmem_cachep, GFP_ATOMIC);
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/net/core/scm.c
Changed
@@ -29,6 +29,7 @@ #include <linux/pid.h> #include <linux/nsproxy.h> #include <linux/slab.h> +#include <linux/fs.h> #include <linux/uaccess.h> @@ -106,6 +107,11 @@ if (fd < 0 || !(file = fget_raw(fd))) return -EBADF; + /* don't allow io_uring files */ + if (io_uring_get_socket(file)) { + fput(file); + return -EINVAL; + } *fpp++ = file; fpl->count++; }
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/net/ipv6/route.c
Changed
@@ -2781,6 +2781,9 @@ int entries; entries = dst_entries_get_fast(ops); + if (entries > rt_max_size) + entries = dst_entries_get_slow(ops); + if (time_after(rt_last_gc + rt_min_interval, jiffies) && entries <= rt_max_size) goto out;
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/net/netfilter/nf_tables_api.c
Changed
@@ -7175,16 +7175,10 @@ data->verdict.code = ntohl(nla_get_be32(tb[NFTA_VERDICT_CODE])); switch (data->verdict.code) { - default: - switch (data->verdict.code & NF_VERDICT_MASK) { - case NF_ACCEPT: - case NF_DROP: - case NF_QUEUE: - break; - default: - return -EINVAL; - } - /* fall through */ + case NF_ACCEPT: + case NF_DROP: + case NF_QUEUE: + break; case NFT_CONTINUE: case NFT_BREAK: case NFT_RETURN: @@ -7203,6 +7197,8 @@ chain->use++; data->verdict.chain = chain; break; + default: + return -EINVAL; } desc->len = sizeof(data->verdict);
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/net/sched/sch_hfsc.c
Changed
@@ -913,6 +913,14 @@ cl->cl_flags |= HFSC_USC; } +static void +hfsc_upgrade_rt(struct hfsc_class *cl) +{ + cl->cl_fsc = cl->cl_rsc; + rtsc_init(&cl->cl_virtual, &cl->cl_fsc, cl->cl_vt, cl->cl_total); + cl->cl_flags |= HFSC_FSC; +} + static const struct nla_policy hfsc_policy[TCA_HFSC_MAX + 1] = { [TCA_HFSC_RSC] = { .len = sizeof(struct tc_service_curve) }, [TCA_HFSC_FSC] = { .len = sizeof(struct tc_service_curve) }, @@ -1021,10 +1029,6 @@ if (parent == NULL) return -ENOENT; } - if (!(parent->cl_flags & HFSC_FSC) && parent != &q->root) { - NL_SET_ERR_MSG(extack, "Invalid parent - parent class must have FSC"); - return -EINVAL; - } if (classid == 0 || TC_H_MAJ(classid ^ sch->handle) != 0) return -EINVAL; @@ -1077,6 +1081,12 @@ cl->cf_tree = RB_ROOT; sch_tree_lock(sch); + /* Check if the inner class is a misconfigured 'rt' */ + if (!(parent->cl_flags & HFSC_FSC) && parent != &q->root) { + NL_SET_ERR_MSG(extack, + "Forced curve change on parent 'rt' to 'sc'"); + hfsc_upgrade_rt(parent); + } qdisc_class_hash_insert(&q->clhash, &cl->cl_common); list_add_tail(&cl->siblings, &parent->children); if (parent->level == 0)
View file
_service:recompress:tar_scm_kernel_repo:kernel.tar.gz/net/socket.c
Changed
@@ -653,13 +653,32 @@ return ret; } -int sock_sendmsg(struct socket *sock, struct msghdr *msg) +static int __sock_sendmsg(struct socket *sock, struct msghdr *msg) { int err = security_socket_sendmsg(sock, msg, msg_data_left(msg)); return err ?: sock_sendmsg_nosec(sock, msg); } + +int sock_sendmsg(struct socket *sock, struct msghdr *msg) +{ + struct sockaddr_storage *save_addr = (struct sockaddr_storage *)msg->msg_name; + struct sockaddr_storage address; + int save_len = msg->msg_namelen; + int ret; + + if (msg->msg_name) { + memcpy(&address, msg->msg_name, msg->msg_namelen); + msg->msg_name = &address; + } + + ret = __sock_sendmsg(sock, msg); + msg->msg_name = save_addr; + msg->msg_namelen = save_len; + + return ret; +} EXPORT_SYMBOL(sock_sendmsg); /** @@ -963,7 +982,7 @@ if (sock->type == SOCK_SEQPACKET) msg.msg_flags |= MSG_EOR; - res = sock_sendmsg(sock, &msg); + res = __sock_sendmsg(sock, &msg); *from = msg.msg_iter; return res; } @@ -1940,7 +1959,7 @@ if (sock->file->f_flags & O_NONBLOCK) flags |= MSG_DONTWAIT; msg.msg_flags = flags; - err = sock_sendmsg(sock, &msg); + err = __sock_sendmsg(sock, &msg); out_put: fput_light(sock->file, fput_needed); @@ -2272,7 +2291,7 @@ err = sock_sendmsg_nosec(sock, msg_sys); goto out_freectl; } - err = sock_sendmsg(sock, msg_sys); + err = __sock_sendmsg(sock, msg_sys); /* * If this is sendmmsg() and sending to current destination address was * successful, remember it.
View file
_service:tar_scm_kernel_repo:SOURCE
Changed
@@ -1 +1 @@ -4.19.90-2402.1.0 +4.19.90-2402.4.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.