diff options
Diffstat (limited to 'main/linux-grsec')
-rw-r--r-- | main/linux-grsec/APKBUILD | 8 | ||||
-rw-r--r-- | main/linux-grsec/grsecurity-2.9-3.3.4-201204272006.patch (renamed from main/linux-grsec/grsecurity-2.9-3.3.3-201204231833.patch) | 264 |
2 files changed, 70 insertions, 202 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD index dd212592f3..7d6d094a18 100644 --- a/main/linux-grsec/APKBUILD +++ b/main/linux-grsec/APKBUILD @@ -2,7 +2,7 @@ _flavor=grsec pkgname=linux-${_flavor} -pkgver=3.3.3 +pkgver=3.3.4 _kernver=3.3 pkgrel=0 pkgdesc="Linux kernel with grsecurity" @@ -14,7 +14,7 @@ _config=${config:-kernelconfig.${CARCH}} install= source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz http://ftp.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.xz - grsecurity-2.9-3.3.3-201204231833.patch + grsecurity-2.9-3.3.4-201204272006.patch 0004-arp-flush-arp-cache-on-device-change.patch @@ -138,8 +138,8 @@ dev() { } md5sums="7133f5a2086a7d7ef97abac610c094f5 linux-3.3.tar.xz -634a088d3789870885dc6ee1eb9627d4 patch-3.3.3.xz -be1a42f051803149e2074cdb557de55e grsecurity-2.9-3.3.3-201204231833.patch +9c4cc16f10b645fbb90f6c05ad388883 patch-3.3.4.xz +82b2836bca19ed2c09bbc8c1d29c18f0 grsecurity-2.9-3.3.4-201204272006.patch 776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch 5d2818cb5329aec600ee8ffc3896a728 kernelconfig.x86 39552b468a33a04678113c12ec6c1a91 kernelconfig.x86_64" diff --git a/main/linux-grsec/grsecurity-2.9-3.3.3-201204231833.patch b/main/linux-grsec/grsecurity-2.9-3.3.4-201204272006.patch index 8309b6eb6a..7c10a25a9c 100644 --- a/main/linux-grsec/grsecurity-2.9-3.3.3-201204231833.patch +++ b/main/linux-grsec/grsecurity-2.9-3.3.4-201204272006.patch @@ -195,7 +195,7 @@ index d99fd9c..8689fef 100644 pcd. [PARIDE] diff --git a/Makefile b/Makefile -index 0acd141..865e73d 100644 +index 44ef766..dac9410 100644 --- a/Makefile +++ b/Makefile @@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ @@ -16999,10 +16999,18 @@ index 9c3bd4a..e1d9b35 100644 +EXPORT_SYMBOL(__LOAD_PHYSICAL_ADDR); +#endif diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c -index 739d859..d1d6be7 100644 +index 739d859..aab2a58 100644 --- a/arch/x86/kernel/i387.c +++ b/arch/x86/kernel/i387.c -@@ -188,6 +188,9 @@ int xfpregs_active(struct task_struct *target, const struct user_regset *regset) +@@ -154,6 +154,7 @@ int init_fpu(struct task_struct *tsk) + if (tsk_used_math(tsk)) { + if (HAVE_HWFP && tsk == current) + unlazy_fpu(tsk); ++ tsk->thread.fpu.last_cpu = ~0; + return 0; + } + +@@ -188,6 +189,9 @@ int xfpregs_active(struct task_struct *target, const struct user_regset *regset) int xfpregs_get(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, @@ -17012,7 +17020,7 @@ index 739d859..d1d6be7 100644 void *kbuf, void __user *ubuf) { int ret; -@@ -207,6 +210,9 @@ int xfpregs_get(struct task_struct *target, const struct user_regset *regset, +@@ -207,6 +211,9 @@ int xfpregs_get(struct task_struct *target, const struct user_regset *regset, int xfpregs_set(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, @@ -17022,7 +17030,7 @@ index 739d859..d1d6be7 100644 const void *kbuf, const void __user *ubuf) { int ret; -@@ -240,6 +246,9 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset, +@@ -240,6 +247,9 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset, int xstateregs_get(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, @@ -17032,7 +17040,7 @@ index 739d859..d1d6be7 100644 void *kbuf, void __user *ubuf) { int ret; -@@ -269,6 +278,9 @@ int xstateregs_get(struct task_struct *target, const struct user_regset *regset, +@@ -269,6 +279,9 @@ int xstateregs_get(struct task_struct *target, const struct user_regset *regset, int xstateregs_set(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, @@ -17042,7 +17050,7 @@ index 739d859..d1d6be7 100644 const void *kbuf, const void __user *ubuf) { int ret; -@@ -439,6 +451,9 @@ static void convert_to_fxsr(struct task_struct *tsk, +@@ -439,6 +452,9 @@ static void convert_to_fxsr(struct task_struct *tsk, int fpregs_get(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, @@ -17052,7 +17060,7 @@ index 739d859..d1d6be7 100644 void *kbuf, void __user *ubuf) { struct user_i387_ia32_struct env; -@@ -471,6 +486,9 @@ int fpregs_get(struct task_struct *target, const struct user_regset *regset, +@@ -471,6 +487,9 @@ int fpregs_get(struct task_struct *target, const struct user_regset *regset, int fpregs_set(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, @@ -17062,7 +17070,7 @@ index 739d859..d1d6be7 100644 const void *kbuf, const void __user *ubuf) { struct user_i387_ia32_struct env; -@@ -619,6 +637,8 @@ static inline int restore_i387_fsave(struct _fpstate_ia32 __user *buf) +@@ -619,6 +638,8 @@ static inline int restore_i387_fsave(struct _fpstate_ia32 __user *buf) } static int restore_i387_fxsave(struct _fpstate_ia32 __user *buf, @@ -33318,7 +33326,7 @@ index b89c548..2af3ce4 100644 void dm_uevent_add(struct mapped_device *md, struct list_head *elist) diff --git a/drivers/md/md.c b/drivers/md/md.c -index 6acc846..80a6b96 100644 +index 58027d8..d9cddcd 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -277,10 +277,10 @@ EXPORT_SYMBOL_GPL(md_trim_bio); @@ -35255,10 +35263,10 @@ index 58dc117..f140c77 100644 if ((num_pages != size) || (num_pages > MAX_SKB_FRAGS - skb_shinfo(skb)->nr_frags)) diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c -index 486b404..0d6677d 100644 +index 3ed983c..a1bb418 100644 --- a/drivers/net/ppp/ppp_generic.c +++ b/drivers/net/ppp/ppp_generic.c -@@ -987,7 +987,6 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +@@ -986,7 +986,6 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) void __user *addr = (void __user *) ifr->ifr_ifru.ifru_data; struct ppp_stats stats; struct ppp_comp_stats cstats; @@ -35266,7 +35274,7 @@ index 486b404..0d6677d 100644 switch (cmd) { case SIOCGPPPSTATS: -@@ -1009,8 +1008,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +@@ -1008,8 +1007,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) break; case SIOCGPPPVER: @@ -47381,7 +47389,7 @@ index d355e6e..578d905 100644 enum ocfs2_local_alloc_state diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c -index ba5d97e..c77db25 100644 +index f169da4..9112253 100644 --- a/fs/ocfs2/suballoc.c +++ b/fs/ocfs2/suballoc.c @@ -872,7 +872,7 @@ static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb, @@ -49047,10 +49055,10 @@ index 4023d6b..ab46c6a 100644 if (op) { diff --git a/fs/splice.c b/fs/splice.c -index 1ec0493..d6ab5c2 100644 +index 96d7b28..fd465ac 100644 --- a/fs/splice.c +++ b/fs/splice.c -@@ -193,7 +193,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, +@@ -194,7 +194,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, pipe_lock(pipe); for (;;) { @@ -49059,7 +49067,7 @@ index 1ec0493..d6ab5c2 100644 send_sig(SIGPIPE, current, 0); if (!ret) ret = -EPIPE; -@@ -247,9 +247,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, +@@ -248,9 +248,9 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, do_wakeup = 0; } @@ -49071,7 +49079,7 @@ index 1ec0493..d6ab5c2 100644 } pipe_unlock(pipe); -@@ -559,7 +559,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec, +@@ -560,7 +560,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec, old_fs = get_fs(); set_fs(get_ds()); /* The cast to a user pointer is valid due to the set_fs() */ @@ -49080,7 +49088,7 @@ index 1ec0493..d6ab5c2 100644 set_fs(old_fs); return res; -@@ -574,7 +574,7 @@ static ssize_t kernel_write(struct file *file, const char *buf, size_t count, +@@ -575,7 +575,7 @@ static ssize_t kernel_write(struct file *file, const char *buf, size_t count, old_fs = get_fs(); set_fs(get_ds()); /* The cast to a user pointer is valid due to the set_fs() */ @@ -49089,7 +49097,7 @@ index 1ec0493..d6ab5c2 100644 set_fs(old_fs); return res; -@@ -625,7 +625,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos, +@@ -626,7 +626,7 @@ ssize_t default_file_splice_read(struct file *in, loff_t *ppos, goto err; this_len = min_t(size_t, len, PAGE_CACHE_SIZE - offset); @@ -49098,7 +49106,7 @@ index 1ec0493..d6ab5c2 100644 vec[i].iov_len = this_len; spd.pages[i] = page; spd.nr_pages++; -@@ -845,10 +845,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed); +@@ -848,10 +848,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed); int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd) { while (!pipe->nrbufs) { @@ -49111,7 +49119,7 @@ index 1ec0493..d6ab5c2 100644 return 0; if (sd->flags & SPLICE_F_NONBLOCK) -@@ -1181,7 +1181,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, +@@ -1184,7 +1184,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, * out of the pipe right after the splice_to_pipe(). So set * PIPE_READERS appropriately. */ @@ -49120,7 +49128,7 @@ index 1ec0493..d6ab5c2 100644 current->splice_pipe = pipe; } -@@ -1733,9 +1733,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags) +@@ -1736,9 +1736,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags) ret = -ERESTARTSYS; break; } @@ -49132,7 +49140,7 @@ index 1ec0493..d6ab5c2 100644 if (flags & SPLICE_F_NONBLOCK) { ret = -EAGAIN; break; -@@ -1767,7 +1767,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) +@@ -1770,7 +1770,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) pipe_lock(pipe); while (pipe->nrbufs >= pipe->buffers) { @@ -49141,7 +49149,7 @@ index 1ec0493..d6ab5c2 100644 send_sig(SIGPIPE, current, 0); ret = -EPIPE; break; -@@ -1780,9 +1780,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) +@@ -1783,9 +1783,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) ret = -ERESTARTSYS; break; } @@ -49153,7 +49161,7 @@ index 1ec0493..d6ab5c2 100644 } pipe_unlock(pipe); -@@ -1818,14 +1818,14 @@ retry: +@@ -1821,14 +1821,14 @@ retry: pipe_double_lock(ipipe, opipe); do { @@ -49170,7 +49178,7 @@ index 1ec0493..d6ab5c2 100644 break; /* -@@ -1922,7 +1922,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, +@@ -1925,7 +1925,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, pipe_double_lock(ipipe, opipe); do { @@ -49179,7 +49187,7 @@ index 1ec0493..d6ab5c2 100644 send_sig(SIGPIPE, current, 0); if (!ret) ret = -EPIPE; -@@ -1967,7 +1967,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, +@@ -1970,7 +1970,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, * return EAGAIN if we have the potential of some data in the * future, otherwise just return 0 */ @@ -62201,7 +62209,7 @@ index 9c07dce..a92fa71 100644 if (atomic_sub_and_test((int) count, &kref->refcount)) { release(kref); diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h -index 900c763..098aefa 100644 +index bc21720..098aefa 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -326,7 +326,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vcpu); @@ -62249,27 +62257,7 @@ index 900c763..098aefa 100644 void kvm_arch_exit(void); int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu); -@@ -593,6 +593,7 @@ void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id); - - #ifdef CONFIG_IOMMU_API - int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot); -+void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot); - int kvm_iommu_map_guest(struct kvm *kvm); - int kvm_iommu_unmap_guest(struct kvm *kvm); - int kvm_assign_device(struct kvm *kvm, -@@ -606,6 +607,11 @@ static inline int kvm_iommu_map_pages(struct kvm *kvm, - return 0; - } - -+static inline void kvm_iommu_unmap_pages(struct kvm *kvm, -+ struct kvm_memory_slot *slot) -+{ -+} -+ - static inline int kvm_iommu_map_guest(struct kvm *kvm) - { - return -ENODEV; -@@ -721,7 +727,7 @@ int kvm_setup_default_irq_routing(struct kvm *kvm); +@@ -727,7 +727,7 @@ int kvm_setup_default_irq_routing(struct kvm *kvm); int kvm_set_irq_routing(struct kvm *kvm, const struct kvm_irq_routing_entry *entries, unsigned nr, @@ -62735,7 +62723,7 @@ index ffc0213..2c1f2cb 100644 return nd->saved_names[nd->depth]; } diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 0eac07c..a59f6a8 100644 +index 4f3b01a..8256d1a 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1002,6 +1002,7 @@ struct net_device_ops { @@ -63409,10 +63397,10 @@ index 92808b8..c28cac4 100644 /* shm_mode upper byte flags */ diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index ae86ade..2b51468 100644 +index 42854ce..3b7d3c8 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -654,7 +654,7 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) +@@ -655,7 +655,7 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) */ static inline int skb_queue_empty(const struct sk_buff_head *list) { @@ -63421,7 +63409,7 @@ index ae86ade..2b51468 100644 } /** -@@ -667,7 +667,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list) +@@ -668,7 +668,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list) static inline bool skb_queue_is_last(const struct sk_buff_head *list, const struct sk_buff *skb) { @@ -63430,7 +63418,7 @@ index ae86ade..2b51468 100644 } /** -@@ -680,7 +680,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list, +@@ -681,7 +681,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list, static inline bool skb_queue_is_first(const struct sk_buff_head *list, const struct sk_buff *skb) { @@ -63439,7 +63427,7 @@ index ae86ade..2b51468 100644 } /** -@@ -1545,7 +1545,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) +@@ -1558,7 +1558,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) */ #ifndef NET_SKB_PAD @@ -74954,7 +74942,7 @@ index 68bbf9f..5ef0d12 100644 return err; diff --git a/net/core/dev.c b/net/core/dev.c -index a4bf943..9c83051 100644 +index 7f72c9c..e29943b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1138,10 +1138,14 @@ void dev_load(struct net *net, const char *name) @@ -75035,7 +75023,7 @@ index a4bf943..9c83051 100644 { struct softnet_data *sd = &__get_cpu_var(softnet_data); unsigned long time_limit = jiffies + 2; -@@ -5890,7 +5894,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, +@@ -5858,7 +5862,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, } else { netdev_stats_to_stats64(storage, &dev->stats); } @@ -75159,28 +75147,6 @@ index ff52ad0..aff1c0f 100644 i++, cmfptr++) { int new_fd; -diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index da0c97f..8253632 100644 ---- a/net/core/skbuff.c -+++ b/net/core/skbuff.c -@@ -3160,6 +3160,8 @@ static void sock_rmem_free(struct sk_buff *skb) - */ - int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb) - { -+ int len = skb->len; -+ - if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >= - (unsigned)sk->sk_rcvbuf) - return -ENOMEM; -@@ -3174,7 +3176,7 @@ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb) - - skb_queue_tail(&sk->sk_error_queue, skb); - if (!sock_flag(sk, SOCK_DEAD)) -- sk->sk_data_ready(sk, skb->len); -+ sk->sk_data_ready(sk, len); - return 0; - } - EXPORT_SYMBOL(sock_queue_err_skb); diff --git a/net/core/sock.c b/net/core/sock.c index 02f8dfe..86dfd4a 100644 --- a/net/core/sock.c @@ -76172,7 +76138,7 @@ index d02f7e4..2d2a0f1 100644 static int raw6_seq_show(struct seq_file *seq, void *v) diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c -index 3edd05a..63aad01 100644 +index a89ca8d..12e66b0 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -94,6 +94,10 @@ static struct tcp_md5sig_key *tcp_v6_md5_do_lookup(struct sock *sk, @@ -76186,7 +76152,7 @@ index 3edd05a..63aad01 100644 static void tcp_v6_hash(struct sock *sk) { if (sk->sk_state != TCP_CLOSE) { -@@ -1650,6 +1654,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) +@@ -1654,6 +1658,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) return 0; reset: @@ -76196,7 +76162,7 @@ index 3edd05a..63aad01 100644 tcp_v6_send_reset(sk, skb); discard: if (opt_skb) -@@ -1729,12 +1736,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) +@@ -1733,12 +1740,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) TCP_SKB_CB(skb)->sacked = 0; sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); @@ -76219,7 +76185,7 @@ index 3edd05a..63aad01 100644 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) { NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); -@@ -1782,6 +1797,10 @@ no_tcp_socket: +@@ -1786,6 +1801,10 @@ no_tcp_socket: bad_packet: TCP_INC_STATS_BH(net, TCP_MIB_INERRS); } else { @@ -76230,7 +76196,7 @@ index 3edd05a..63aad01 100644 tcp_v6_send_reset(NULL, skb); } -@@ -2043,7 +2062,13 @@ static void get_openreq6(struct seq_file *seq, +@@ -2047,7 +2066,13 @@ static void get_openreq6(struct seq_file *seq, uid, 0, /* non standard timer */ 0, /* open_requests have no inode */ @@ -76245,7 +76211,7 @@ index 3edd05a..63aad01 100644 } static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i) -@@ -2093,7 +2118,12 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i) +@@ -2097,7 +2122,12 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i) sock_i_uid(sp), icsk->icsk_probes_out, sock_i_ino(sp), @@ -76259,7 +76225,7 @@ index 3edd05a..63aad01 100644 jiffies_to_clock_t(icsk->icsk_rto), jiffies_to_clock_t(icsk->icsk_ack.ato), (icsk->icsk_ack.quick << 1 ) | icsk->icsk_ack.pingpong, -@@ -2128,7 +2158,13 @@ static void get_timewait6_sock(struct seq_file *seq, +@@ -2132,7 +2162,13 @@ static void get_timewait6_sock(struct seq_file *seq, dest->s6_addr32[2], dest->s6_addr32[3], destp, tw->tw_substate, 0, 0, 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0, @@ -76957,7 +76923,7 @@ index 4fe4fb4..87a89e5 100644 return 0; } diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c -index 629b061..8f415cc 100644 +index 467af9c..8f415cc 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -741,7 +741,7 @@ static void netlink_overrun(struct sock *sk) @@ -76969,64 +76935,7 @@ index 629b061..8f415cc 100644 } static struct sock *netlink_getsockbypid(struct sock *ssk, u32 pid) -@@ -829,12 +829,19 @@ int netlink_attachskb(struct sock *sk, struct sk_buff *skb, - return 0; - } - --int netlink_sendskb(struct sock *sk, struct sk_buff *skb) -+static int __netlink_sendskb(struct sock *sk, struct sk_buff *skb) - { - int len = skb->len; - - skb_queue_tail(&sk->sk_receive_queue, skb); - sk->sk_data_ready(sk, len); -+ return len; -+} -+ -+int netlink_sendskb(struct sock *sk, struct sk_buff *skb) -+{ -+ int len = __netlink_sendskb(sk, skb); -+ - sock_put(sk); - return len; - } -@@ -957,8 +964,7 @@ static int netlink_broadcast_deliver(struct sock *sk, struct sk_buff *skb) - if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf && - !test_bit(0, &nlk->state)) { - skb_set_owner_r(skb, sk); -- skb_queue_tail(&sk->sk_receive_queue, skb); -- sk->sk_data_ready(sk, skb->len); -+ __netlink_sendskb(sk, skb); - return atomic_read(&sk->sk_rmem_alloc) > (sk->sk_rcvbuf >> 1); - } - return -1; -@@ -1680,10 +1686,8 @@ static int netlink_dump(struct sock *sk) - - if (sk_filter(sk, skb)) - kfree_skb(skb); -- else { -- skb_queue_tail(&sk->sk_receive_queue, skb); -- sk->sk_data_ready(sk, skb->len); -- } -+ else -+ __netlink_sendskb(sk, skb); - return 0; - } - -@@ -1697,10 +1701,8 @@ static int netlink_dump(struct sock *sk) - - if (sk_filter(sk, skb)) - kfree_skb(skb); -- else { -- skb_queue_tail(&sk->sk_receive_queue, skb); -- sk->sk_data_ready(sk, skb->len); -- } -+ else -+ __netlink_sendskb(sk, skb); - - if (cb->done) - cb->done(cb); -@@ -1995,7 +1997,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) +@@ -1997,7 +1997,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) sk_wmem_alloc_get(s), nlk->cb, atomic_read(&s->sk_refcnt), @@ -77118,7 +77027,7 @@ index d65f699..05aa6ce 100644 err = proto_register(pp->prot, 1); diff --git a/net/phonet/pep.c b/net/phonet/pep.c -index 9f60008..ae96f04 100644 +index 9726fe6..fc4e3a4 100644 --- a/net/phonet/pep.c +++ b/net/phonet/pep.c @@ -388,7 +388,7 @@ static int pipe_do_rcv(struct sock *sk, struct sk_buff *skb) @@ -77596,10 +77505,10 @@ index 1e2eee8..ce3967e 100644 assoc->assoc_id, assoc->sndbuf_used, diff --git a/net/sctp/socket.c b/net/sctp/socket.c -index 408ebd0..202aa85 100644 +index d043722..6903416 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c -@@ -4574,7 +4574,7 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, +@@ -4575,7 +4575,7 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len; if (space_left < addrlen) return -ENOMEM; @@ -77609,7 +77518,7 @@ index 408ebd0..202aa85 100644 to += addrlen; cnt++; diff --git a/net/socket.c b/net/socket.c -index 28a96af..61a7a06 100644 +index 0de4131..7e7ddab 100644 --- a/net/socket.c +++ b/net/socket.c @@ -88,6 +88,7 @@ @@ -78452,7 +78361,7 @@ index 0000000..8729101 +#!/bin/sh +echo -e "#include \"gcc-plugin.h\"\n#include \"tree.h\"\n#include \"tm.h\"\n#include \"rtl.h\"" | $1 -x c -shared - -o /dev/null -I`$2 -print-file-name=plugin`/include >/dev/null 2>&1 && echo "y" diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c -index b89efe6..2c30808 100644 +index e047e17..ea646ec 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c @@ -128,7 +128,7 @@ static void device_id_check(const char *modname, const char *device_id, @@ -86018,33 +85927,8 @@ index af0f22f..9a7d479 100644 } else break; } -diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c -index a457d21..fec1723 100644 ---- a/virt/kvm/iommu.c -+++ b/virt/kvm/iommu.c -@@ -310,6 +310,11 @@ static void kvm_iommu_put_pages(struct kvm *kvm, - } - } - -+void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot) -+{ -+ kvm_iommu_put_pages(kvm, slot->base_gfn, slot->npages); -+} -+ - static int kvm_iommu_unmap_memslots(struct kvm *kvm) - { - int idx; -@@ -320,7 +325,7 @@ static int kvm_iommu_unmap_memslots(struct kvm *kvm) - slots = kvm_memslots(kvm); - - kvm_for_each_memslot(memslot, slots) -- kvm_iommu_put_pages(kvm, memslot->base_gfn, memslot->npages); -+ kvm_iommu_unmap_pages(kvm, memslot); - - srcu_read_unlock(&kvm->srcu, idx); - diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c -index a91f980..527711d 100644 +index c4ac57e..527711d 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -75,7 +75,7 @@ LIST_HEAD(vm_list); @@ -86056,23 +85940,7 @@ index a91f980..527711d 100644 struct kmem_cache *kvm_vcpu_cache; EXPORT_SYMBOL_GPL(kvm_vcpu_cache); -@@ -873,12 +873,13 @@ skip_lpage: - if (r) - goto out_free; - -- /* map the pages in iommu page table */ -+ /* map/unmap the pages in iommu page table */ - if (npages) { - r = kvm_iommu_map_pages(kvm, &new); - if (r) - goto out_free; -- } -+ } else -+ kvm_iommu_unmap_pages(kvm, &old); - - r = -ENOMEM; - slots = kmemdup(kvm->memslots, sizeof(struct kvm_memslots), -@@ -2312,7 +2313,7 @@ static void hardware_enable_nolock(void *junk) +@@ -2313,7 +2313,7 @@ static void hardware_enable_nolock(void *junk) if (r) { cpumask_clear_cpu(cpu, cpus_hardware_enabled); @@ -86081,7 +85949,7 @@ index a91f980..527711d 100644 printk(KERN_INFO "kvm: enabling virtualization on " "CPU%d failed\n", cpu); } -@@ -2366,10 +2367,10 @@ static int hardware_enable_all(void) +@@ -2367,10 +2367,10 @@ static int hardware_enable_all(void) kvm_usage_count++; if (kvm_usage_count == 1) { @@ -86094,7 +85962,7 @@ index a91f980..527711d 100644 hardware_disable_all_nolock(); r = -EBUSY; } -@@ -2732,7 +2733,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, +@@ -2733,7 +2733,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, kvm_arch_vcpu_put(vcpu); } @@ -86103,7 +85971,7 @@ index a91f980..527711d 100644 struct module *module) { int r; -@@ -2795,7 +2796,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, +@@ -2796,7 +2796,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, if (!vcpu_align) vcpu_align = __alignof__(struct kvm_vcpu); kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align, @@ -86112,7 +85980,7 @@ index a91f980..527711d 100644 if (!kvm_vcpu_cache) { r = -ENOMEM; goto out_free_3; -@@ -2805,9 +2806,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, +@@ -2806,9 +2806,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, if (r) goto out_free; |