&sin->sin6_addr);
sin->sin6_scope_id = 0;
}
-@@ -853,12 +853,12 @@ int ip6_datagram_send_ctl(struct net *ne
+@@ -891,12 +891,12 @@ int ip6_datagram_send_ctl(struct net *ne
}
if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
case IPV6_2292HOPOPTS:
--- a/net/ipv6/exthdrs.c
+++ b/net/ipv6/exthdrs.c
-@@ -1004,7 +1004,7 @@ static bool ipv6_hop_jumbo(struct sk_buf
+@@ -1008,7 +1008,7 @@ static bool ipv6_hop_jumbo(struct sk_buf
goto drop;
}
module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644);
MODULE_PARM_DESC(mousepoll, "Polling interval of mice");
-@@ -1132,7 +1132,9 @@ static int usbhid_start(struct hid_devic
+@@ -1133,7 +1133,9 @@ static int usbhid_start(struct hid_devic
*/
switch (hid->collection->usage) {
case HID_GD_MOUSE:
interval = hid_mousepoll_interval;
break;
case HID_GD_JOYSTICK:
-@@ -1144,6 +1146,7 @@ static int usbhid_start(struct hid_devic
+@@ -1145,6 +1147,7 @@ static int usbhid_start(struct hid_devic
interval = hid_kbpoll_interval;
break;
}
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
-@@ -1951,6 +1951,16 @@ reset:
+@@ -1949,6 +1949,16 @@ reset:
return ret;
}
if (job->perfmon)
v3d_perfmon_put(job->perfmon);
-@@ -199,6 +243,7 @@ v3d_job_init(struct v3d_dev *v3d, struct
+@@ -217,6 +261,7 @@ v3d_job_init(struct v3d_dev *v3d, struct
goto fail_deps;
}
kref_init(&job->refcount);
return 0;
-@@ -1398,3 +1443,14 @@ fail:
+@@ -1414,3 +1459,14 @@ fail:
return ret;
}
#define USB_VENDOR_ID_BELKIN 0x050d
#define USB_DEVICE_ID_FLIP_KVM 0x3201
-@@ -1484,6 +1487,9 @@
+@@ -1485,6 +1488,9 @@
#define USB_VENDOR_ID_XIAOMI 0x2717
#define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
-@@ -217,6 +218,7 @@ static const struct hid_device_id hid_qu
+@@ -218,6 +219,7 @@ static const struct hid_device_id hid_qu
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET },
#ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
unsigned int pageblock_order __read_mostly;
#endif
-@@ -2292,12 +2313,13 @@ __rmqueue(struct zone *zone, unsigned in
+@@ -2293,12 +2314,13 @@ __rmqueue(struct zone *zone, unsigned in
if (IS_ENABLED(CONFIG_CMA)) {
/*
* Balance movable allocations between regular and CMA areas by
--- a/drivers/gpu/drm/v3d/v3d_submit.c
+++ b/drivers/gpu/drm/v3d/v3d_submit.c
-@@ -125,9 +125,9 @@ v3d_lookup_bos(struct drm_device *dev,
- }
-
- static void
--v3d_job_free(struct kref *ref)
-+v3d_job_free_common(struct v3d_job *job,
-+ bool is_gpu_job)
- {
-- struct v3d_job *job = container_of(ref, struct v3d_job, refcount);
- struct v3d_dev *v3d = job->v3d;
- int i;
-
-@@ -140,7 +140,8 @@ v3d_job_free(struct kref *ref)
- dma_fence_put(job->irq_fence);
- dma_fence_put(job->done_fence);
-
-- v3d_clock_up_put(v3d);
-+ if (is_gpu_job)
-+ v3d_clock_up_put(v3d);
-
- if (job->perfmon)
- v3d_perfmon_put(job->perfmon);
-@@ -149,6 +150,22 @@ v3d_job_free(struct kref *ref)
- }
-
- static void
-+v3d_job_free(struct kref *ref)
-+{
-+ struct v3d_job *job = container_of(ref, struct v3d_job, refcount);
-+
-+ v3d_job_free_common(job, true);
-+}
-+
-+static void
-+v3d_cpu_job_free(struct kref *ref)
-+{
-+ struct v3d_job *job = container_of(ref, struct v3d_job, refcount);
-+
-+ v3d_job_free_common(job, false);
-+}
-+
-+static void
- v3d_render_job_free(struct kref *ref)
- {
- struct v3d_render_job *job = container_of(ref, struct v3d_render_job,
-@@ -242,8 +259,9 @@ v3d_job_init(struct v3d_dev *v3d, struct
+@@ -260,8 +260,9 @@ v3d_job_init(struct v3d_dev *v3d, struct
if (ret && ret != -ENOENT)
goto fail_deps;
}
kref_init(&job->refcount);
return 0;
-@@ -1355,7 +1373,7 @@ v3d_submit_cpu_ioctl(struct drm_device *
- trace_v3d_submit_cpu_ioctl(&v3d->drm, cpu_job->job_type);
-
- ret = v3d_job_init(v3d, file_priv, &cpu_job->base,
-- v3d_job_free, 0, &se, V3D_CPU);
-+ v3d_cpu_job_free, 0, &se, V3D_CPU);
- if (ret) {
- v3d_job_deallocate((void *)&cpu_job);
- goto fail;
+}
--- a/drivers/gpu/drm/v3d/v3d_sched.c
+++ b/drivers/gpu/drm/v3d/v3d_sched.c
-@@ -120,11 +120,19 @@ v3d_cpu_job_free(struct drm_sched_job *s
+@@ -106,11 +106,19 @@ v3d_performance_query_info_free(struct v
static void
v3d_switch_perfmon(struct v3d_dev *v3d, struct v3d_job *job)
{
static void
--- a/drivers/gpu/drm/v3d/v3d_submit.c
+++ b/drivers/gpu/drm/v3d/v3d_submit.c
-@@ -1049,6 +1049,11 @@ v3d_submit_cl_ioctl(struct drm_device *d
+@@ -1050,6 +1050,11 @@ v3d_submit_cl_ioctl(struct drm_device *d
goto fail;
if (args->perfmon_id) {
render->base.perfmon = v3d_perfmon_find(v3d_priv,
args->perfmon_id);
-@@ -1264,6 +1269,11 @@ v3d_submit_csd_ioctl(struct drm_device *
+@@ -1265,6 +1270,11 @@ v3d_submit_csd_ioctl(struct drm_device *
goto fail;
if (args->perfmon_id) {
--- a/drivers/gpu/drm/v3d/v3d_sched.c
+++ b/drivers/gpu/drm/v3d/v3d_sched.c
-@@ -677,8 +677,6 @@ v3d_cpu_job_run(struct drm_sched_job *sc
+@@ -663,8 +663,6 @@ v3d_cpu_job_run(struct drm_sched_job *sc
struct v3d_cpu_job *job = to_cpu_job(sched_job);
struct v3d_dev *v3d = job->base.v3d;
--- a/drivers/gpu/drm/v3d/v3d_sched.c
+++ b/drivers/gpu/drm/v3d/v3d_sched.c
-@@ -230,8 +230,12 @@ static struct dma_fence *v3d_bin_job_run
+@@ -216,8 +216,12 @@ static struct dma_fence *v3d_bin_job_run
struct dma_fence *fence;
unsigned long irqflags;
/* Lock required around bin_job update vs
* v3d_overflow_mem_work().
-@@ -285,8 +289,10 @@ static struct dma_fence *v3d_render_job_
+@@ -271,8 +275,10 @@ static struct dma_fence *v3d_render_job_
struct drm_device *dev = &v3d->drm;
struct dma_fence *fence;
v3d->render_job = job;
-@@ -331,8 +337,10 @@ v3d_tfu_job_run(struct drm_sched_job *sc
+@@ -317,8 +323,10 @@ v3d_tfu_job_run(struct drm_sched_job *sc
struct drm_device *dev = &v3d->drm;
struct dma_fence *fence;
v3d->tfu_job = job;
-@@ -377,8 +385,10 @@ v3d_csd_job_run(struct drm_sched_job *sc
+@@ -363,8 +371,10 @@ v3d_csd_job_run(struct drm_sched_job *sc
struct dma_fence *fence;
int i, csd_cfg0_reg;
}
--- a/drivers/gpu/drm/v3d/v3d_sched.c
+++ b/drivers/gpu/drm/v3d/v3d_sched.c
-@@ -361,11 +361,11 @@ v3d_tfu_job_run(struct drm_sched_job *sc
+@@ -347,11 +347,11 @@ v3d_tfu_job_run(struct drm_sched_job *sc
V3D_WRITE(V3D_TFU_ICA(v3d->ver), job->args.ica);
V3D_WRITE(V3D_TFU_IUA(v3d->ver), job->args.iua);
V3D_WRITE(V3D_TFU_IOA(v3d->ver), job->args.ioa);
V3D_WRITE(V3D_TFU_COEF1(v3d->ver), job->args.coef[1]);
V3D_WRITE(V3D_TFU_COEF2(v3d->ver), job->args.coef[2]);
V3D_WRITE(V3D_TFU_COEF3(v3d->ver), job->args.coef[3]);
-@@ -416,7 +416,7 @@ v3d_csd_job_run(struct drm_sched_job *sc
+@@ -402,7 +402,7 @@ v3d_csd_job_run(struct drm_sched_job *sc
*
* XXX: Set the CFG7 register
*/
{ }
--- a/drivers/net/phy/mscc/mscc_main.c
+++ b/drivers/net/phy/mscc/mscc_main.c
-@@ -2710,7 +2710,7 @@ static struct phy_driver vsc85xx_driver[
+@@ -2695,7 +2695,7 @@ static struct phy_driver vsc85xx_driver[
module_phy_driver(vsc85xx_driver);
*/
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -3274,6 +3274,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -3276,6 +3276,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
}
/**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter
-@@ -3439,16 +3443,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -3441,16 +3445,6 @@ static inline struct sk_buff *dev_alloc_
}
-LINUX_VERSION-6.12 = .92
-LINUX_KERNEL_HASH-6.12.92 = 0fe376b7db3cac4456b38291bee4faa7091cb8befaa6f9870314f5d1282f9e3e
+LINUX_VERSION-6.12 = .93
+LINUX_KERNEL_HASH-6.12.93 = 492648a87c0b69c5ac7f43be64792b9000e3439550d4e82e4a14710c49094fa3
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -3241,7 +3241,7 @@ static inline int pskb_network_may_pull(
+@@ -3243,7 +3243,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/
#ifndef NET_SKB_PAD
static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = {
.__rcuref = RCUREF_INIT(1),
-@@ -1086,6 +1100,7 @@ static const int fib6_prop[RTN_MAX + 1]
+@@ -1089,6 +1103,7 @@ static const int fib6_prop[RTN_MAX + 1]
[RTN_BLACKHOLE] = -EINVAL,
[RTN_UNREACHABLE] = -EHOSTUNREACH,
[RTN_PROHIBIT] = -EACCES,
[RTN_THROW] = -EAGAIN,
[RTN_NAT] = -EINVAL,
[RTN_XRESOLVE] = -EINVAL,
-@@ -1121,6 +1136,10 @@ static void ip6_rt_init_dst_reject(struc
+@@ -1124,6 +1139,10 @@ static void ip6_rt_init_dst_reject(struc
rt->dst.output = ip6_pkt_prohibit_out;
rt->dst.input = ip6_pkt_prohibit;
break;
case RTN_THROW:
case RTN_UNREACHABLE:
default:
-@@ -4609,6 +4628,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -4612,6 +4631,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -5100,7 +5130,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -5103,7 +5133,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -6371,6 +6402,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6376,6 +6407,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -6382,6 +6415,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6387,6 +6420,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
-@@ -6577,6 +6611,8 @@ static int __net_init ip6_route_net_init
+@@ -6582,6 +6616,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false;
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL);
-@@ -6587,11 +6623,21 @@ static int __net_init ip6_route_net_init
+@@ -6592,11 +6628,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
-@@ -6618,6 +6664,8 @@ out:
+@@ -6623,6 +6669,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6637,6 +6685,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6642,6 +6690,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6720,6 +6769,9 @@ void __init ip6_route_init_special_entri
+@@ -6725,6 +6774,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
+#endif
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -4850,6 +4850,9 @@ enum skb_ext_id {
+@@ -4852,6 +4852,9 @@ enum skb_ext_id {
#if IS_ENABLED(CONFIG_MCTP_FLOWS)
SKB_EXT_MCTP,
#endif
#include <net/dst.h>
#include <net/sock.h>
#include <net/checksum.h>
-@@ -5074,6 +5078,9 @@ static const u8 skb_ext_type_len[] = {
+@@ -5097,6 +5101,9 @@ static const u8 skb_ext_type_len[] = {
#if IS_ENABLED(CONFIG_MCTP_FLOWS)
[SKB_EXT_MCTP] = SKB_EXT_CHUNKSIZEOF(struct mctp_flow),
#endif