(empty log message)
@@ -1,6 +1,6 @@ | ||
1 | -This is TOMOYO Linux patch for kernel 4.14.280. | |
1 | +This is TOMOYO Linux patch for kernel 4.14.284. | |
2 | 2 | |
3 | -Source code for this patch is https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.280.tar.xz | |
3 | +Source code for this patch is https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.284.tar.xz | |
4 | 4 | --- |
5 | 5 | fs/exec.c | 2 - |
6 | 6 | fs/open.c | 2 + |
@@ -28,8 +28,8 @@ | ||
28 | 28 | security/security.c | 9 +++++- |
29 | 29 | 24 files changed, 153 insertions(+), 29 deletions(-) |
30 | 30 | |
31 | ---- linux-4.14.280.orig/fs/exec.c | |
32 | -+++ linux-4.14.280/fs/exec.c | |
31 | +--- linux-4.14.284.orig/fs/exec.c | |
32 | ++++ linux-4.14.284/fs/exec.c | |
33 | 33 | @@ -1692,7 +1692,7 @@ static int exec_binprm(struct linux_binp |
34 | 34 | old_vpid = task_pid_nr_ns(current, task_active_pid_ns(current->parent)); |
35 | 35 | rcu_read_unlock(); |
@@ -39,8 +39,8 @@ | ||
39 | 39 | if (ret >= 0) { |
40 | 40 | audit_bprm(bprm); |
41 | 41 | trace_sched_process_exec(current, old_pid, bprm); |
42 | ---- linux-4.14.280.orig/fs/open.c | |
43 | -+++ linux-4.14.280/fs/open.c | |
42 | +--- linux-4.14.284.orig/fs/open.c | |
43 | ++++ linux-4.14.284/fs/open.c | |
44 | 44 | @@ -1193,6 +1193,8 @@ EXPORT_SYMBOL(sys_close); |
45 | 45 | */ |
46 | 46 | SYSCALL_DEFINE0(vhangup) |
@@ -50,8 +50,8 @@ | ||
50 | 50 | if (capable(CAP_SYS_TTY_CONFIG)) { |
51 | 51 | tty_vhangup_self(); |
52 | 52 | return 0; |
53 | ---- linux-4.14.280.orig/fs/proc/version.c | |
54 | -+++ linux-4.14.280/fs/proc/version.c | |
53 | +--- linux-4.14.284.orig/fs/proc/version.c | |
54 | ++++ linux-4.14.284/fs/proc/version.c | |
55 | 55 | @@ -33,3 +33,10 @@ static int __init proc_version_init(void |
56 | 56 | return 0; |
57 | 57 | } |
@@ -59,12 +59,12 @@ | ||
59 | 59 | + |
60 | 60 | +static int __init ccs_show_version(void) |
61 | 61 | +{ |
62 | -+ printk(KERN_INFO "Hook version: 4.14.280 2022/05/23\n"); | |
62 | ++ printk(KERN_INFO "Hook version: 4.14.284 2022/06/17\n"); | |
63 | 63 | + return 0; |
64 | 64 | +} |
65 | 65 | +fs_initcall(ccs_show_version); |
66 | ---- linux-4.14.280.orig/include/linux/init_task.h | |
67 | -+++ linux-4.14.280/include/linux/init_task.h | |
66 | +--- linux-4.14.284.orig/include/linux/init_task.h | |
67 | ++++ linux-4.14.284/include/linux/init_task.h | |
68 | 68 | @@ -219,6 +219,14 @@ extern struct cred init_cred; |
69 | 69 | #define INIT_TASK_SECURITY |
70 | 70 | #endif |
@@ -88,8 +88,8 @@ | ||
88 | 88 | } |
89 | 89 | |
90 | 90 | |
91 | ---- linux-4.14.280.orig/include/linux/sched.h | |
92 | -+++ linux-4.14.280/include/linux/sched.h | |
91 | +--- linux-4.14.284.orig/include/linux/sched.h | |
92 | ++++ linux-4.14.284/include/linux/sched.h | |
93 | 93 | @@ -33,6 +33,7 @@ struct audit_context; |
94 | 94 | struct backing_dev_info; |
95 | 95 | struct bio_list; |
@@ -109,8 +109,8 @@ | ||
109 | 109 | |
110 | 110 | /* |
111 | 111 | * New fields for task_struct should be added above here, so that |
112 | ---- linux-4.14.280.orig/include/linux/security.h | |
113 | -+++ linux-4.14.280/include/linux/security.h | |
112 | +--- linux-4.14.284.orig/include/linux/security.h | |
113 | ++++ linux-4.14.284/include/linux/security.h | |
114 | 114 | @@ -56,6 +56,7 @@ struct msg_queue; |
115 | 115 | struct xattr; |
116 | 116 | struct xfrm_sec_ctx; |
@@ -331,8 +331,8 @@ | ||
331 | 331 | } |
332 | 332 | #endif /* CONFIG_SECURITY_PATH */ |
333 | 333 | |
334 | ---- linux-4.14.280.orig/include/net/ip.h | |
335 | -+++ linux-4.14.280/include/net/ip.h | |
334 | +--- linux-4.14.284.orig/include/net/ip.h | |
335 | ++++ linux-4.14.284/include/net/ip.h | |
336 | 336 | @@ -266,6 +266,8 @@ void inet_get_local_port_range(struct ne |
337 | 337 | #ifdef CONFIG_SYSCTL |
338 | 338 | static inline int inet_is_local_reserved_port(struct net *net, int port) |
@@ -351,8 +351,8 @@ | ||
351 | 351 | return 0; |
352 | 352 | } |
353 | 353 | |
354 | ---- linux-4.14.280.orig/kernel/kexec.c | |
355 | -+++ linux-4.14.280/kernel/kexec.c | |
354 | +--- linux-4.14.284.orig/kernel/kexec.c | |
355 | ++++ linux-4.14.284/kernel/kexec.c | |
356 | 356 | @@ -17,7 +17,7 @@ |
357 | 357 | #include <linux/syscalls.h> |
358 | 358 | #include <linux/vmalloc.h> |
@@ -371,8 +371,8 @@ | ||
371 | 371 | |
372 | 372 | /* |
373 | 373 | * Verify we have a legal set of flags |
374 | ---- linux-4.14.280.orig/kernel/module.c | |
375 | -+++ linux-4.14.280/kernel/module.c | |
374 | +--- linux-4.14.284.orig/kernel/module.c | |
375 | ++++ linux-4.14.284/kernel/module.c | |
376 | 376 | @@ -66,6 +66,7 @@ |
377 | 377 | #include <linux/audit.h> |
378 | 378 | #include <uapi/linux/module.h> |
@@ -399,9 +399,9 @@ | ||
399 | 399 | |
400 | 400 | return 0; |
401 | 401 | } |
402 | ---- linux-4.14.280.orig/kernel/ptrace.c | |
403 | -+++ linux-4.14.280/kernel/ptrace.c | |
404 | -@@ -1186,6 +1186,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
402 | +--- linux-4.14.284.orig/kernel/ptrace.c | |
403 | ++++ linux-4.14.284/kernel/ptrace.c | |
404 | +@@ -1185,6 +1185,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
405 | 405 | { |
406 | 406 | struct task_struct *child; |
407 | 407 | long ret; |
@@ -413,7 +413,7 @@ | ||
413 | 413 | |
414 | 414 | if (request == PTRACE_TRACEME) { |
415 | 415 | ret = ptrace_traceme(); |
416 | -@@ -1335,6 +1340,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
416 | +@@ -1334,6 +1339,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
417 | 417 | { |
418 | 418 | struct task_struct *child; |
419 | 419 | long ret; |
@@ -425,8 +425,8 @@ | ||
425 | 425 | |
426 | 426 | if (request == PTRACE_TRACEME) { |
427 | 427 | ret = ptrace_traceme(); |
428 | ---- linux-4.14.280.orig/kernel/reboot.c | |
429 | -+++ linux-4.14.280/kernel/reboot.c | |
428 | +--- linux-4.14.284.orig/kernel/reboot.c | |
429 | ++++ linux-4.14.284/kernel/reboot.c | |
430 | 430 | @@ -16,6 +16,7 @@ |
431 | 431 | #include <linux/syscalls.h> |
432 | 432 | #include <linux/syscore_ops.h> |
@@ -444,8 +444,8 @@ | ||
444 | 444 | |
445 | 445 | /* |
446 | 446 | * If pid namespaces are enabled and the current task is in a child |
447 | ---- linux-4.14.280.orig/kernel/sched/core.c | |
448 | -+++ linux-4.14.280/kernel/sched/core.c | |
447 | +--- linux-4.14.284.orig/kernel/sched/core.c | |
448 | ++++ linux-4.14.284/kernel/sched/core.c | |
449 | 449 | @@ -3859,6 +3859,8 @@ int can_nice(const struct task_struct *p |
450 | 450 | SYSCALL_DEFINE1(nice, int, increment) |
451 | 451 | { |
@@ -455,8 +455,8 @@ | ||
455 | 455 | |
456 | 456 | /* |
457 | 457 | * Setpriority might change our priority at the same moment. |
458 | ---- linux-4.14.280.orig/kernel/signal.c | |
459 | -+++ linux-4.14.280/kernel/signal.c | |
458 | +--- linux-4.14.284.orig/kernel/signal.c | |
459 | ++++ linux-4.14.284/kernel/signal.c | |
460 | 460 | @@ -3031,6 +3031,8 @@ COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait, |
461 | 461 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
462 | 462 | { |
@@ -502,8 +502,8 @@ | ||
502 | 502 | |
503 | 503 | return do_send_specific(tgid, pid, sig, info); |
504 | 504 | } |
505 | ---- linux-4.14.280.orig/kernel/sys.c | |
506 | -+++ linux-4.14.280/kernel/sys.c | |
505 | +--- linux-4.14.284.orig/kernel/sys.c | |
506 | ++++ linux-4.14.284/kernel/sys.c | |
507 | 507 | @@ -193,6 +193,10 @@ SYSCALL_DEFINE3(setpriority, int, which, |
508 | 508 | |
509 | 509 | if (which > PRIO_USER || which < PRIO_PROCESS) |
@@ -533,8 +533,8 @@ | ||
533 | 533 | |
534 | 534 | errno = -EFAULT; |
535 | 535 | if (!copy_from_user(tmp, name, len)) { |
536 | ---- linux-4.14.280.orig/kernel/time/ntp.c | |
537 | -+++ linux-4.14.280/kernel/time/ntp.c | |
536 | +--- linux-4.14.284.orig/kernel/time/ntp.c | |
537 | ++++ linux-4.14.284/kernel/time/ntp.c | |
538 | 538 | @@ -18,6 +18,7 @@ |
539 | 539 | #include <linux/module.h> |
540 | 540 | #include <linux/rtc.h> |
@@ -568,8 +568,8 @@ | ||
568 | 568 | |
569 | 569 | if (txc->modes & ADJ_NANO) { |
570 | 570 | struct timespec ts; |
571 | ---- linux-4.14.280.orig/net/ipv4/raw.c | |
572 | -+++ linux-4.14.280/net/ipv4/raw.c | |
571 | +--- linux-4.14.284.orig/net/ipv4/raw.c | |
572 | ++++ linux-4.14.284/net/ipv4/raw.c | |
573 | 573 | @@ -771,6 +771,10 @@ static int raw_recvmsg(struct sock *sk, |
574 | 574 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
575 | 575 | if (!skb) |
@@ -581,8 +581,8 @@ | ||
581 | 581 | |
582 | 582 | copied = skb->len; |
583 | 583 | if (len < copied) { |
584 | ---- linux-4.14.280.orig/net/ipv4/udp.c | |
585 | -+++ linux-4.14.280/net/ipv4/udp.c | |
584 | +--- linux-4.14.284.orig/net/ipv4/udp.c | |
585 | ++++ linux-4.14.284/net/ipv4/udp.c | |
586 | 586 | @@ -1608,6 +1608,8 @@ try_again: |
587 | 587 | skb = __skb_recv_udp(sk, flags, noblock, &peeked, &off, &err); |
588 | 588 | if (!skb) |
@@ -592,8 +592,8 @@ | ||
592 | 592 | |
593 | 593 | ulen = udp_skb_len(skb); |
594 | 594 | copied = len; |
595 | ---- linux-4.14.280.orig/net/ipv6/raw.c | |
596 | -+++ linux-4.14.280/net/ipv6/raw.c | |
595 | +--- linux-4.14.284.orig/net/ipv6/raw.c | |
596 | ++++ linux-4.14.284/net/ipv6/raw.c | |
597 | 597 | @@ -485,6 +485,10 @@ static int rawv6_recvmsg(struct sock *sk |
598 | 598 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
599 | 599 | if (!skb) |
@@ -605,8 +605,8 @@ | ||
605 | 605 | |
606 | 606 | copied = skb->len; |
607 | 607 | if (copied > len) { |
608 | ---- linux-4.14.280.orig/net/ipv6/udp.c | |
609 | -+++ linux-4.14.280/net/ipv6/udp.c | |
608 | +--- linux-4.14.284.orig/net/ipv6/udp.c | |
609 | ++++ linux-4.14.284/net/ipv6/udp.c | |
610 | 610 | @@ -371,6 +371,8 @@ try_again: |
611 | 611 | skb = __skb_recv_udp(sk, flags, noblock, &peeked, &off, &err); |
612 | 612 | if (!skb) |
@@ -616,8 +616,8 @@ | ||
616 | 616 | |
617 | 617 | ulen = udp6_skb_len(skb); |
618 | 618 | copied = len; |
619 | ---- linux-4.14.280.orig/net/socket.c | |
620 | -+++ linux-4.14.280/net/socket.c | |
619 | +--- linux-4.14.284.orig/net/socket.c | |
620 | ++++ linux-4.14.284/net/socket.c | |
621 | 621 | @@ -1588,6 +1588,10 @@ SYSCALL_DEFINE4(accept4, int, fd, struct |
622 | 622 | if (err < 0) |
623 | 623 | goto out_fd; |
@@ -629,8 +629,8 @@ | ||
629 | 629 | if (upeer_sockaddr) { |
630 | 630 | if (newsock->ops->getname(newsock, (struct sockaddr *)&address, |
631 | 631 | &len, 2) < 0) { |
632 | ---- linux-4.14.280.orig/net/unix/af_unix.c | |
633 | -+++ linux-4.14.280/net/unix/af_unix.c | |
632 | +--- linux-4.14.284.orig/net/unix/af_unix.c | |
633 | ++++ linux-4.14.284/net/unix/af_unix.c | |
634 | 634 | @@ -2173,6 +2173,10 @@ static int unix_dgram_recvmsg(struct soc |
635 | 635 | POLLOUT | POLLWRNORM | |
636 | 636 | POLLWRBAND); |
@@ -650,8 +650,8 @@ | ||
650 | 650 | mutex_unlock(&u->iolock); |
651 | 651 | out: |
652 | 652 | return err; |
653 | ---- linux-4.14.280.orig/security/Kconfig | |
654 | -+++ linux-4.14.280/security/Kconfig | |
653 | +--- linux-4.14.284.orig/security/Kconfig | |
654 | ++++ linux-4.14.284/security/Kconfig | |
655 | 655 | @@ -263,5 +263,7 @@ config DEFAULT_SECURITY |
656 | 656 | default "apparmor" if DEFAULT_SECURITY_APPARMOR |
657 | 657 | default "" if DEFAULT_SECURITY_DAC |
@@ -660,8 +660,8 @@ | ||
660 | 660 | + |
661 | 661 | endmenu |
662 | 662 | |
663 | ---- linux-4.14.280.orig/security/Makefile | |
664 | -+++ linux-4.14.280/security/Makefile | |
663 | +--- linux-4.14.284.orig/security/Makefile | |
664 | ++++ linux-4.14.284/security/Makefile | |
665 | 665 | @@ -30,3 +30,6 @@ obj-$(CONFIG_CGROUP_DEVICE) += device_c |
666 | 666 | # Object integrity file lists |
667 | 667 | subdir-$(CONFIG_INTEGRITY) += integrity |
@@ -669,8 +669,8 @@ | ||
669 | 669 | + |
670 | 670 | +subdir-$(CONFIG_CCSECURITY) += ccsecurity |
671 | 671 | +obj-$(CONFIG_CCSECURITY) += ccsecurity/ |
672 | ---- linux-4.14.280.orig/security/security.c | |
673 | -+++ linux-4.14.280/security/security.c | |
672 | +--- linux-4.14.284.orig/security/security.c | |
673 | ++++ linux-4.14.284/security/security.c | |
674 | 674 | @@ -978,12 +978,19 @@ int security_file_open(struct file *file |
675 | 675 | |
676 | 676 | int security_task_alloc(struct task_struct *task, unsigned long clone_flags) |
@@ -1,6 +1,6 @@ | ||
1 | 1 | This is TOMOYO Linux patch for CentOS Stream 8. |
2 | 2 | |
3 | -Source code for this patch is https://vault.centos.org/centos/8-stream/BaseOS/Source/SPackages/kernel-4.18.0-383.el8.src.rpm | |
3 | +Source code for this patch is https://vault.centos.org/centos/8-stream/BaseOS/Source/SPackages/kernel-4.18.0-394.el8.src.rpm | |
4 | 4 | --- |
5 | 5 | fs/exec.c | 2 - |
6 | 6 | fs/open.c | 2 + |
@@ -28,8 +28,8 @@ | ||
28 | 28 | security/security.c | 5 ++- |
29 | 29 | 24 files changed, 144 insertions(+), 29 deletions(-) |
30 | 30 | |
31 | ---- linux-4.18.0-383.el8.orig/fs/exec.c | |
32 | -+++ linux-4.18.0-383.el8/fs/exec.c | |
31 | +--- linux-4.18.0-394.el8.orig/fs/exec.c | |
32 | ++++ linux-4.18.0-394.el8/fs/exec.c | |
33 | 33 | @@ -1748,7 +1748,7 @@ static int exec_binprm(struct linux_binp |
34 | 34 | old_vpid = task_pid_nr_ns(current, task_active_pid_ns(current->parent)); |
35 | 35 | rcu_read_unlock(); |
@@ -39,9 +39,9 @@ | ||
39 | 39 | if (ret >= 0) { |
40 | 40 | audit_bprm(bprm); |
41 | 41 | trace_sched_process_exec(current, old_pid, bprm); |
42 | ---- linux-4.18.0-383.el8.orig/fs/open.c | |
43 | -+++ linux-4.18.0-383.el8/fs/open.c | |
44 | -@@ -1237,6 +1237,8 @@ SYSCALL_DEFINE3(close_range, unsigned in | |
42 | +--- linux-4.18.0-394.el8.orig/fs/open.c | |
43 | ++++ linux-4.18.0-394.el8/fs/open.c | |
44 | +@@ -1330,6 +1330,8 @@ SYSCALL_DEFINE3(close_range, unsigned in | |
45 | 45 | */ |
46 | 46 | SYSCALL_DEFINE0(vhangup) |
47 | 47 | { |
@@ -50,8 +50,8 @@ | ||
50 | 50 | if (capable(CAP_SYS_TTY_CONFIG)) { |
51 | 51 | tty_vhangup_self(); |
52 | 52 | return 0; |
53 | ---- linux-4.18.0-383.el8.orig/fs/proc/version.c | |
54 | -+++ linux-4.18.0-383.el8/fs/proc/version.c | |
53 | +--- linux-4.18.0-394.el8.orig/fs/proc/version.c | |
54 | ++++ linux-4.18.0-394.el8/fs/proc/version.c | |
55 | 55 | @@ -21,3 +21,10 @@ static int __init proc_version_init(void |
56 | 56 | return 0; |
57 | 57 | } |
@@ -59,12 +59,12 @@ | ||
59 | 59 | + |
60 | 60 | +static int __init ccs_show_version(void) |
61 | 61 | +{ |
62 | -+ printk(KERN_INFO "Hook version: 4.18.0-383.el8 2022/05/11\n"); | |
62 | ++ printk(KERN_INFO "Hook version: 4.18.0-394.el8 2022/06/17\n"); | |
63 | 63 | + return 0; |
64 | 64 | +} |
65 | 65 | +fs_initcall(ccs_show_version); |
66 | ---- linux-4.18.0-383.el8.orig/include/linux/sched.h | |
67 | -+++ linux-4.18.0-383.el8/include/linux/sched.h | |
66 | +--- linux-4.18.0-394.el8.orig/include/linux/sched.h | |
67 | ++++ linux-4.18.0-394.el8/include/linux/sched.h | |
68 | 68 | @@ -41,6 +41,7 @@ struct audit_context; |
69 | 69 | struct backing_dev_info; |
70 | 70 | struct bio_list; |
@@ -73,7 +73,7 @@ | ||
73 | 73 | struct cfs_rq; |
74 | 74 | struct fs_struct; |
75 | 75 | struct futex_pi_state; |
76 | -@@ -1408,6 +1409,10 @@ struct task_struct { | |
76 | +@@ -1432,6 +1433,10 @@ struct task_struct { | |
77 | 77 | /* Used by LSM modules for access restriction: */ |
78 | 78 | void *security; |
79 | 79 | #endif |
@@ -84,8 +84,8 @@ | ||
84 | 84 | |
85 | 85 | /* |
86 | 86 | * New fields for task_struct should be added above here, so that |
87 | ---- linux-4.18.0-383.el8.orig/include/linux/security.h | |
88 | -+++ linux-4.18.0-383.el8/include/linux/security.h | |
87 | +--- linux-4.18.0-394.el8.orig/include/linux/security.h | |
88 | ++++ linux-4.18.0-394.el8/include/linux/security.h | |
89 | 89 | @@ -56,6 +56,7 @@ struct mm_struct; |
90 | 90 | struct fs_context; |
91 | 91 | struct fs_parameter; |
@@ -306,9 +306,9 @@ | ||
306 | 306 | } |
307 | 307 | #endif /* CONFIG_SECURITY_PATH */ |
308 | 308 | |
309 | ---- linux-4.18.0-383.el8.orig/include/net/ip.h | |
310 | -+++ linux-4.18.0-383.el8/include/net/ip.h | |
311 | -@@ -282,6 +282,8 @@ void inet_get_local_port_range(struct ne | |
309 | +--- linux-4.18.0-394.el8.orig/include/net/ip.h | |
310 | ++++ linux-4.18.0-394.el8/include/net/ip.h | |
311 | +@@ -297,6 +297,8 @@ void inet_get_local_port_range(struct ne | |
312 | 312 | #ifdef CONFIG_SYSCTL |
313 | 313 | static inline bool inet_is_local_reserved_port(struct net *net, int port) |
314 | 314 | { |
@@ -317,7 +317,7 @@ | ||
317 | 317 | if (!net->ipv4.sysctl_local_reserved_ports) |
318 | 318 | return false; |
319 | 319 | return test_bit(port, net->ipv4.sysctl_local_reserved_ports); |
320 | -@@ -300,6 +302,8 @@ static inline bool inet_port_requires_bi | |
320 | +@@ -315,6 +317,8 @@ static inline bool inet_port_requires_bi | |
321 | 321 | #else |
322 | 322 | static inline bool inet_is_local_reserved_port(struct net *net, int port) |
323 | 323 | { |
@@ -326,8 +326,8 @@ | ||
326 | 326 | return false; |
327 | 327 | } |
328 | 328 | |
329 | ---- linux-4.18.0-383.el8.orig/init/init_task.c | |
330 | -+++ linux-4.18.0-383.el8/init/init_task.c | |
329 | +--- linux-4.18.0-394.el8.orig/init/init_task.c | |
330 | ++++ linux-4.18.0-394.el8/init/init_task.c | |
331 | 331 | @@ -217,6 +217,10 @@ struct task_struct init_task |
332 | 332 | #ifdef CONFIG_SECURITY |
333 | 333 | .security = NULL, |
@@ -339,8 +339,8 @@ | ||
339 | 339 | }; |
340 | 340 | EXPORT_SYMBOL(init_task); |
341 | 341 | |
342 | ---- linux-4.18.0-383.el8.orig/kernel/kexec.c | |
343 | -+++ linux-4.18.0-383.el8/kernel/kexec.c | |
342 | +--- linux-4.18.0-394.el8.orig/kernel/kexec.c | |
343 | ++++ linux-4.18.0-394.el8/kernel/kexec.c | |
344 | 344 | @@ -18,7 +18,7 @@ |
345 | 345 | #include <linux/syscalls.h> |
346 | 346 | #include <linux/vmalloc.h> |
@@ -359,8 +359,8 @@ | ||
359 | 359 | |
360 | 360 | /* Permit LSMs and IMA to fail the kexec */ |
361 | 361 | result = security_kernel_load_data(LOADING_KEXEC_IMAGE); |
362 | ---- linux-4.18.0-383.el8.orig/kernel/module.c | |
363 | -+++ linux-4.18.0-383.el8/kernel/module.c | |
362 | +--- linux-4.18.0-394.el8.orig/kernel/module.c | |
363 | ++++ linux-4.18.0-394.el8/kernel/module.c | |
364 | 364 | @@ -67,6 +67,7 @@ |
365 | 365 | #include <linux/audit.h> |
366 | 366 | #include <uapi/linux/module.h> |
@@ -387,8 +387,8 @@ | ||
387 | 387 | |
388 | 388 | return 0; |
389 | 389 | } |
390 | ---- linux-4.18.0-383.el8.orig/kernel/ptrace.c | |
391 | -+++ linux-4.18.0-383.el8/kernel/ptrace.c | |
390 | +--- linux-4.18.0-394.el8.orig/kernel/ptrace.c | |
391 | ++++ linux-4.18.0-394.el8/kernel/ptrace.c | |
392 | 392 | @@ -1137,6 +1137,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l |
393 | 393 | { |
394 | 394 | struct task_struct *child; |
@@ -413,8 +413,8 @@ | ||
413 | 413 | |
414 | 414 | if (request == PTRACE_TRACEME) { |
415 | 415 | ret = ptrace_traceme(); |
416 | ---- linux-4.18.0-383.el8.orig/kernel/reboot.c | |
417 | -+++ linux-4.18.0-383.el8/kernel/reboot.c | |
416 | +--- linux-4.18.0-394.el8.orig/kernel/reboot.c | |
417 | ++++ linux-4.18.0-394.el8/kernel/reboot.c | |
418 | 418 | @@ -16,6 +16,7 @@ |
419 | 419 | #include <linux/syscalls.h> |
420 | 420 | #include <linux/syscore_ops.h> |
@@ -432,9 +432,9 @@ | ||
432 | 432 | |
433 | 433 | /* |
434 | 434 | * If pid namespaces are enabled and the current task is in a child |
435 | ---- linux-4.18.0-383.el8.orig/kernel/sched/core.c | |
436 | -+++ linux-4.18.0-383.el8/kernel/sched/core.c | |
437 | -@@ -5022,6 +5022,8 @@ int can_nice(const struct task_struct *p | |
435 | +--- linux-4.18.0-394.el8.orig/kernel/sched/core.c | |
436 | ++++ linux-4.18.0-394.el8/kernel/sched/core.c | |
437 | +@@ -4996,6 +4996,8 @@ int can_nice(const struct task_struct *p | |
438 | 438 | SYSCALL_DEFINE1(nice, int, increment) |
439 | 439 | { |
440 | 440 | long nice, retval; |
@@ -443,9 +443,9 @@ | ||
443 | 443 | |
444 | 444 | /* |
445 | 445 | * Setpriority might change our priority at the same moment. |
446 | ---- linux-4.18.0-383.el8.orig/kernel/signal.c | |
447 | -+++ linux-4.18.0-383.el8/kernel/signal.c | |
448 | -@@ -3547,6 +3547,8 @@ SYSCALL_DEFINE2(kill, pid_t, pid, int, s | |
446 | +--- linux-4.18.0-394.el8.orig/kernel/signal.c | |
447 | ++++ linux-4.18.0-394.el8/kernel/signal.c | |
448 | +@@ -3562,6 +3562,8 @@ SYSCALL_DEFINE2(kill, pid_t, pid, int, s | |
449 | 449 | { |
450 | 450 | struct kernel_siginfo info; |
451 | 451 |
@@ -454,7 +454,7 @@ | ||
454 | 454 | prepare_kill_siginfo(sig, &info); |
455 | 455 | |
456 | 456 | return kill_something_info(sig, &info, pid); |
457 | -@@ -3729,6 +3731,8 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid | |
457 | +@@ -3744,6 +3746,8 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid | |
458 | 458 | /* This is only valid for single tasks */ |
459 | 459 | if (pid <= 0 || tgid <= 0) |
460 | 460 | return -EINVAL; |
@@ -463,7 +463,7 @@ | ||
463 | 463 | |
464 | 464 | return do_tkill(tgid, pid, sig); |
465 | 465 | } |
466 | -@@ -3745,6 +3749,8 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, | |
466 | +@@ -3760,6 +3764,8 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, | |
467 | 467 | /* This is only valid for single tasks */ |
468 | 468 | if (pid <= 0) |
469 | 469 | return -EINVAL; |
@@ -472,7 +472,7 @@ | ||
472 | 472 | |
473 | 473 | return do_tkill(0, pid, sig); |
474 | 474 | } |
475 | -@@ -3758,6 +3764,8 @@ static int do_rt_sigqueueinfo(pid_t pid, | |
475 | +@@ -3773,6 +3779,8 @@ static int do_rt_sigqueueinfo(pid_t pid, | |
476 | 476 | (task_pid_vnr(current) != pid)) |
477 | 477 | return -EPERM; |
478 | 478 |
@@ -481,7 +481,7 @@ | ||
481 | 481 | /* POSIX.1b doesn't mention process groups. */ |
482 | 482 | return kill_proc_info(sig, info, pid); |
483 | 483 | } |
484 | -@@ -3805,6 +3813,8 @@ static int do_rt_tgsigqueueinfo(pid_t tg | |
484 | +@@ -3820,6 +3828,8 @@ static int do_rt_tgsigqueueinfo(pid_t tg | |
485 | 485 | (task_pid_vnr(current) != pid)) |
486 | 486 | return -EPERM; |
487 | 487 |
@@ -490,8 +490,8 @@ | ||
490 | 490 | return do_send_specific(tgid, pid, sig, info); |
491 | 491 | } |
492 | 492 | |
493 | ---- linux-4.18.0-383.el8.orig/kernel/sys.c | |
494 | -+++ linux-4.18.0-383.el8/kernel/sys.c | |
493 | +--- linux-4.18.0-394.el8.orig/kernel/sys.c | |
494 | ++++ linux-4.18.0-394.el8/kernel/sys.c | |
495 | 495 | @@ -210,6 +210,10 @@ SYSCALL_DEFINE3(setpriority, int, which, |
496 | 496 | |
497 | 497 | if (which > PRIO_USER || which < PRIO_PROCESS) |
@@ -521,8 +521,8 @@ | ||
521 | 521 | |
522 | 522 | down_write(&uts_sem); |
523 | 523 | errno = -EFAULT; |
524 | ---- linux-4.18.0-383.el8.orig/kernel/time/timekeeping.c | |
525 | -+++ linux-4.18.0-383.el8/kernel/time/timekeeping.c | |
524 | +--- linux-4.18.0-394.el8.orig/kernel/time/timekeeping.c | |
525 | ++++ linux-4.18.0-394.el8/kernel/time/timekeeping.c | |
526 | 526 | @@ -26,6 +26,7 @@ |
527 | 527 | #include <linux/pvclock_gtod.h> |
528 | 528 | #include <linux/compiler.h> |
@@ -531,7 +531,7 @@ | ||
531 | 531 | |
532 | 532 | #include "tick-internal.h" |
533 | 533 | #include "ntp_internal.h" |
534 | -@@ -2264,10 +2265,15 @@ static int timekeeping_validate_timex(co | |
534 | +@@ -2266,10 +2267,15 @@ static int timekeeping_validate_timex(co | |
535 | 535 | if (!(txc->modes & ADJ_OFFSET_READONLY) && |
536 | 536 | !capable(CAP_SYS_TIME)) |
537 | 537 | return -EPERM; |
@@ -547,7 +547,7 @@ | ||
547 | 547 | /* |
548 | 548 | * if the quartz is off by more than 10% then |
549 | 549 | * something is VERY wrong! |
550 | -@@ -2282,6 +2288,8 @@ static int timekeeping_validate_timex(co | |
550 | +@@ -2284,6 +2290,8 @@ static int timekeeping_validate_timex(co | |
551 | 551 | /* In order to inject time, you gotta be super-user! */ |
552 | 552 | if (!capable(CAP_SYS_TIME)) |
553 | 553 | return -EPERM; |
@@ -556,9 +556,9 @@ | ||
556 | 556 | |
557 | 557 | /* |
558 | 558 | * Validate if a timespec/timeval used to inject a time |
559 | ---- linux-4.18.0-383.el8.orig/net/ipv4/raw.c | |
560 | -+++ linux-4.18.0-383.el8/net/ipv4/raw.c | |
561 | -@@ -781,6 +781,10 @@ static int raw_recvmsg(struct sock *sk, | |
559 | +--- linux-4.18.0-394.el8.orig/net/ipv4/raw.c | |
560 | ++++ linux-4.18.0-394.el8/net/ipv4/raw.c | |
561 | +@@ -775,6 +775,10 @@ static int raw_recvmsg(struct sock *sk, | |
562 | 562 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
563 | 563 | if (!skb) |
564 | 564 | goto out; |
@@ -569,9 +569,9 @@ | ||
569 | 569 | |
570 | 570 | copied = skb->len; |
571 | 571 | if (len < copied) { |
572 | ---- linux-4.18.0-383.el8.orig/net/ipv4/udp.c | |
573 | -+++ linux-4.18.0-383.el8/net/ipv4/udp.c | |
574 | -@@ -1858,6 +1858,8 @@ try_again: | |
572 | +--- linux-4.18.0-394.el8.orig/net/ipv4/udp.c | |
573 | ++++ linux-4.18.0-394.el8/net/ipv4/udp.c | |
574 | +@@ -1848,6 +1848,8 @@ try_again: | |
575 | 575 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
576 | 576 | if (!skb) |
577 | 577 | return err; |
@@ -580,8 +580,8 @@ | ||
580 | 580 | |
581 | 581 | ulen = udp_skb_len(skb); |
582 | 582 | copied = len; |
583 | ---- linux-4.18.0-383.el8.orig/net/ipv6/raw.c | |
584 | -+++ linux-4.18.0-383.el8/net/ipv6/raw.c | |
583 | +--- linux-4.18.0-394.el8.orig/net/ipv6/raw.c | |
584 | ++++ linux-4.18.0-394.el8/net/ipv6/raw.c | |
585 | 585 | @@ -485,6 +485,10 @@ static int rawv6_recvmsg(struct sock *sk |
586 | 586 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
587 | 587 | if (!skb) |
@@ -593,8 +593,8 @@ | ||
593 | 593 | |
594 | 594 | copied = skb->len; |
595 | 595 | if (copied > len) { |
596 | ---- linux-4.18.0-383.el8.orig/net/ipv6/udp.c | |
597 | -+++ linux-4.18.0-383.el8/net/ipv6/udp.c | |
596 | +--- linux-4.18.0-394.el8.orig/net/ipv6/udp.c | |
597 | ++++ linux-4.18.0-394.el8/net/ipv6/udp.c | |
598 | 598 | @@ -346,6 +346,8 @@ try_again: |
599 | 599 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
600 | 600 | if (!skb) |
@@ -604,8 +604,8 @@ | ||
604 | 604 | |
605 | 605 | ulen = udp6_skb_len(skb); |
606 | 606 | copied = len; |
607 | ---- linux-4.18.0-383.el8.orig/net/socket.c | |
608 | -+++ linux-4.18.0-383.el8/net/socket.c | |
607 | +--- linux-4.18.0-394.el8.orig/net/socket.c | |
608 | ++++ linux-4.18.0-394.el8/net/socket.c | |
609 | 609 | @@ -1715,6 +1715,10 @@ int __sys_accept4_file(struct file *file |
610 | 610 | if (err < 0) |
611 | 611 | goto out_fd; |
@@ -617,8 +617,8 @@ | ||
617 | 617 | if (upeer_sockaddr) { |
618 | 618 | len = newsock->ops->getname(newsock, |
619 | 619 | (struct sockaddr *)&address, 2); |
620 | ---- linux-4.18.0-383.el8.orig/net/unix/af_unix.c | |
621 | -+++ linux-4.18.0-383.el8/net/unix/af_unix.c | |
620 | +--- linux-4.18.0-394.el8.orig/net/unix/af_unix.c | |
621 | ++++ linux-4.18.0-394.el8/net/unix/af_unix.c | |
622 | 622 | @@ -2165,6 +2165,10 @@ static int unix_dgram_recvmsg(struct soc |
623 | 623 | EPOLLOUT | EPOLLWRNORM | |
624 | 624 | EPOLLWRBAND); |
@@ -638,8 +638,8 @@ | ||
638 | 638 | mutex_unlock(&u->iolock); |
639 | 639 | out: |
640 | 640 | return err; |
641 | ---- linux-4.18.0-383.el8.orig/security/Kconfig | |
642 | -+++ linux-4.18.0-383.el8/security/Kconfig | |
641 | +--- linux-4.18.0-394.el8.orig/security/Kconfig | |
642 | ++++ linux-4.18.0-394.el8/security/Kconfig | |
643 | 643 | @@ -326,4 +326,6 @@ config LSM |
644 | 644 | |
645 | 645 | source "security/Kconfig.hardening" |
@@ -647,8 +647,8 @@ | ||
647 | 647 | +source security/ccsecurity/Kconfig |
648 | 648 | + |
649 | 649 | endmenu |
650 | ---- linux-4.18.0-383.el8.orig/security/Makefile | |
651 | -+++ linux-4.18.0-383.el8/security/Makefile | |
650 | +--- linux-4.18.0-394.el8.orig/security/Makefile | |
651 | ++++ linux-4.18.0-394.el8/security/Makefile | |
652 | 652 | @@ -35,3 +35,6 @@ obj-$(CONFIG_INTEGRITY) += integrity/ |
653 | 653 | |
654 | 654 | # Allow the kernel to be locked down |
@@ -656,8 +656,8 @@ | ||
656 | 656 | + |
657 | 657 | +subdir-$(CONFIG_CCSECURITY) += ccsecurity |
658 | 658 | +obj-$(CONFIG_CCSECURITY) += ccsecurity/ |
659 | ---- linux-4.18.0-383.el8.orig/security/security.c | |
660 | -+++ linux-4.18.0-383.el8/security/security.c | |
659 | +--- linux-4.18.0-394.el8.orig/security/security.c | |
660 | ++++ linux-4.18.0-394.el8/security/security.c | |
661 | 661 | @@ -1553,7 +1553,9 @@ int security_task_alloc(struct task_stru |
662 | 662 | |
663 | 663 | if (rc) |
@@ -1,6 +1,6 @@ | ||
1 | -This is TOMOYO Linux patch for kernel 4.19.244. | |
1 | +This is TOMOYO Linux patch for kernel 4.19.248. | |
2 | 2 | |
3 | -Source code for this patch is https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.19.244.tar.xz | |
3 | +Source code for this patch is https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.19.248.tar.xz | |
4 | 4 | --- |
5 | 5 | fs/exec.c | 2 - |
6 | 6 | fs/open.c | 2 + |
@@ -28,8 +28,8 @@ | ||
28 | 28 | security/security.c | 9 +++++- |
29 | 29 | 24 files changed, 148 insertions(+), 29 deletions(-) |
30 | 30 | |
31 | ---- linux-4.19.244.orig/fs/exec.c | |
32 | -+++ linux-4.19.244/fs/exec.c | |
31 | +--- linux-4.19.248.orig/fs/exec.c | |
32 | ++++ linux-4.19.248/fs/exec.c | |
33 | 33 | @@ -1707,7 +1707,7 @@ static int exec_binprm(struct linux_binp |
34 | 34 | old_vpid = task_pid_nr_ns(current, task_active_pid_ns(current->parent)); |
35 | 35 | rcu_read_unlock(); |
@@ -39,8 +39,8 @@ | ||
39 | 39 | if (ret >= 0) { |
40 | 40 | audit_bprm(bprm); |
41 | 41 | trace_sched_process_exec(current, old_pid, bprm); |
42 | ---- linux-4.19.244.orig/fs/open.c | |
43 | -+++ linux-4.19.244/fs/open.c | |
42 | +--- linux-4.19.248.orig/fs/open.c | |
43 | ++++ linux-4.19.248/fs/open.c | |
44 | 44 | @@ -1196,6 +1196,8 @@ SYSCALL_DEFINE1(close, unsigned int, fd) |
45 | 45 | */ |
46 | 46 | SYSCALL_DEFINE0(vhangup) |
@@ -50,8 +50,8 @@ | ||
50 | 50 | if (capable(CAP_SYS_TTY_CONFIG)) { |
51 | 51 | tty_vhangup_self(); |
52 | 52 | return 0; |
53 | ---- linux-4.19.244.orig/fs/proc/version.c | |
54 | -+++ linux-4.19.244/fs/proc/version.c | |
53 | +--- linux-4.19.248.orig/fs/proc/version.c | |
54 | ++++ linux-4.19.248/fs/proc/version.c | |
55 | 55 | @@ -21,3 +21,10 @@ static int __init proc_version_init(void |
56 | 56 | return 0; |
57 | 57 | } |
@@ -59,12 +59,12 @@ | ||
59 | 59 | + |
60 | 60 | +static int __init ccs_show_version(void) |
61 | 61 | +{ |
62 | -+ printk(KERN_INFO "Hook version: 4.19.244 2022/05/23\n"); | |
62 | ++ printk(KERN_INFO "Hook version: 4.19.248 2022/06/17\n"); | |
63 | 63 | + return 0; |
64 | 64 | +} |
65 | 65 | +fs_initcall(ccs_show_version); |
66 | ---- linux-4.19.244.orig/include/linux/sched.h | |
67 | -+++ linux-4.19.244/include/linux/sched.h | |
66 | +--- linux-4.19.248.orig/include/linux/sched.h | |
67 | ++++ linux-4.19.248/include/linux/sched.h | |
68 | 68 | @@ -34,6 +34,7 @@ struct audit_context; |
69 | 69 | struct backing_dev_info; |
70 | 70 | struct bio_list; |
@@ -84,8 +84,8 @@ | ||
84 | 84 | |
85 | 85 | /* |
86 | 86 | * New fields for task_struct should be added above here, so that |
87 | ---- linux-4.19.244.orig/include/linux/security.h | |
88 | -+++ linux-4.19.244/include/linux/security.h | |
87 | +--- linux-4.19.248.orig/include/linux/security.h | |
88 | ++++ linux-4.19.248/include/linux/security.h | |
89 | 89 | @@ -53,6 +53,7 @@ struct msg_msg; |
90 | 90 | struct xattr; |
91 | 91 | struct xfrm_sec_ctx; |
@@ -306,8 +306,8 @@ | ||
306 | 306 | } |
307 | 307 | #endif /* CONFIG_SECURITY_PATH */ |
308 | 308 | |
309 | ---- linux-4.19.244.orig/include/net/ip.h | |
310 | -+++ linux-4.19.244/include/net/ip.h | |
309 | +--- linux-4.19.248.orig/include/net/ip.h | |
310 | ++++ linux-4.19.248/include/net/ip.h | |
311 | 311 | @@ -302,6 +302,8 @@ void inet_get_local_port_range(struct ne |
312 | 312 | #ifdef CONFIG_SYSCTL |
313 | 313 | static inline int inet_is_local_reserved_port(struct net *net, int port) |
@@ -326,8 +326,8 @@ | ||
326 | 326 | return 0; |
327 | 327 | } |
328 | 328 | |
329 | ---- linux-4.19.244.orig/init/init_task.c | |
330 | -+++ linux-4.19.244/init/init_task.c | |
329 | +--- linux-4.19.248.orig/init/init_task.c | |
330 | ++++ linux-4.19.248/init/init_task.c | |
331 | 331 | @@ -180,6 +180,10 @@ struct task_struct init_task |
332 | 332 | #ifdef CONFIG_SECURITY |
333 | 333 | .security = NULL, |
@@ -339,8 +339,8 @@ | ||
339 | 339 | }; |
340 | 340 | EXPORT_SYMBOL(init_task); |
341 | 341 | |
342 | ---- linux-4.19.244.orig/kernel/kexec.c | |
343 | -+++ linux-4.19.244/kernel/kexec.c | |
342 | +--- linux-4.19.248.orig/kernel/kexec.c | |
343 | ++++ linux-4.19.248/kernel/kexec.c | |
344 | 344 | @@ -18,7 +18,7 @@ |
345 | 345 | #include <linux/syscalls.h> |
346 | 346 | #include <linux/vmalloc.h> |
@@ -359,8 +359,8 @@ | ||
359 | 359 | |
360 | 360 | /* Permit LSMs and IMA to fail the kexec */ |
361 | 361 | result = security_kernel_load_data(LOADING_KEXEC_IMAGE); |
362 | ---- linux-4.19.244.orig/kernel/module.c | |
363 | -+++ linux-4.19.244/kernel/module.c | |
362 | +--- linux-4.19.248.orig/kernel/module.c | |
363 | ++++ linux-4.19.248/kernel/module.c | |
364 | 364 | @@ -66,6 +66,7 @@ |
365 | 365 | #include <linux/audit.h> |
366 | 366 | #include <uapi/linux/module.h> |
@@ -387,9 +387,9 @@ | ||
387 | 387 | |
388 | 388 | return 0; |
389 | 389 | } |
390 | ---- linux-4.19.244.orig/kernel/ptrace.c | |
391 | -+++ linux-4.19.244/kernel/ptrace.c | |
392 | -@@ -1169,6 +1169,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
390 | +--- linux-4.19.248.orig/kernel/ptrace.c | |
391 | ++++ linux-4.19.248/kernel/ptrace.c | |
392 | +@@ -1168,6 +1168,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
393 | 393 | { |
394 | 394 | struct task_struct *child; |
395 | 395 | long ret; |
@@ -401,7 +401,7 @@ | ||
401 | 401 | |
402 | 402 | if (request == PTRACE_TRACEME) { |
403 | 403 | ret = ptrace_traceme(); |
404 | -@@ -1317,6 +1322,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
404 | +@@ -1316,6 +1321,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
405 | 405 | { |
406 | 406 | struct task_struct *child; |
407 | 407 | long ret; |
@@ -413,8 +413,8 @@ | ||
413 | 413 | |
414 | 414 | if (request == PTRACE_TRACEME) { |
415 | 415 | ret = ptrace_traceme(); |
416 | ---- linux-4.19.244.orig/kernel/reboot.c | |
417 | -+++ linux-4.19.244/kernel/reboot.c | |
416 | +--- linux-4.19.248.orig/kernel/reboot.c | |
417 | ++++ linux-4.19.248/kernel/reboot.c | |
418 | 418 | @@ -16,6 +16,7 @@ |
419 | 419 | #include <linux/syscalls.h> |
420 | 420 | #include <linux/syscore_ops.h> |
@@ -432,8 +432,8 @@ | ||
432 | 432 | |
433 | 433 | /* |
434 | 434 | * If pid namespaces are enabled and the current task is in a child |
435 | ---- linux-4.19.244.orig/kernel/sched/core.c | |
436 | -+++ linux-4.19.244/kernel/sched/core.c | |
435 | +--- linux-4.19.248.orig/kernel/sched/core.c | |
436 | ++++ linux-4.19.248/kernel/sched/core.c | |
437 | 437 | @@ -3992,6 +3992,8 @@ int can_nice(const struct task_struct *p |
438 | 438 | SYSCALL_DEFINE1(nice, int, increment) |
439 | 439 | { |
@@ -443,8 +443,8 @@ | ||
443 | 443 | |
444 | 444 | /* |
445 | 445 | * Setpriority might change our priority at the same moment. |
446 | ---- linux-4.19.244.orig/kernel/signal.c | |
447 | -+++ linux-4.19.244/kernel/signal.c | |
446 | +--- linux-4.19.248.orig/kernel/signal.c | |
447 | ++++ linux-4.19.248/kernel/signal.c | |
448 | 448 | @@ -3276,6 +3276,8 @@ COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait, |
449 | 449 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
450 | 450 | { |
@@ -490,8 +490,8 @@ | ||
490 | 490 | |
491 | 491 | return do_send_specific(tgid, pid, sig, info); |
492 | 492 | } |
493 | ---- linux-4.19.244.orig/kernel/sys.c | |
494 | -+++ linux-4.19.244/kernel/sys.c | |
493 | +--- linux-4.19.248.orig/kernel/sys.c | |
494 | ++++ linux-4.19.248/kernel/sys.c | |
495 | 495 | @@ -201,6 +201,10 @@ SYSCALL_DEFINE3(setpriority, int, which, |
496 | 496 | |
497 | 497 | if (which > PRIO_USER || which < PRIO_PROCESS) |
@@ -521,8 +521,8 @@ | ||
521 | 521 | |
522 | 522 | errno = -EFAULT; |
523 | 523 | if (!copy_from_user(tmp, name, len)) { |
524 | ---- linux-4.19.244.orig/kernel/time/timekeeping.c | |
525 | -+++ linux-4.19.244/kernel/time/timekeeping.c | |
524 | +--- linux-4.19.248.orig/kernel/time/timekeeping.c | |
525 | ++++ linux-4.19.248/kernel/time/timekeeping.c | |
526 | 526 | @@ -26,6 +26,7 @@ |
527 | 527 | #include <linux/stop_machine.h> |
528 | 528 | #include <linux/pvclock_gtod.h> |
@@ -556,8 +556,8 @@ | ||
556 | 556 | |
557 | 557 | /* |
558 | 558 | * Validate if a timespec/timeval used to inject a time |
559 | ---- linux-4.19.244.orig/net/ipv4/raw.c | |
560 | -+++ linux-4.19.244/net/ipv4/raw.c | |
559 | +--- linux-4.19.248.orig/net/ipv4/raw.c | |
560 | ++++ linux-4.19.248/net/ipv4/raw.c | |
561 | 561 | @@ -775,6 +775,10 @@ static int raw_recvmsg(struct sock *sk, |
562 | 562 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
563 | 563 | if (!skb) |
@@ -569,8 +569,8 @@ | ||
569 | 569 | |
570 | 570 | copied = skb->len; |
571 | 571 | if (len < copied) { |
572 | ---- linux-4.19.244.orig/net/ipv4/udp.c | |
573 | -+++ linux-4.19.244/net/ipv4/udp.c | |
572 | +--- linux-4.19.248.orig/net/ipv4/udp.c | |
573 | ++++ linux-4.19.248/net/ipv4/udp.c | |
574 | 574 | @@ -1686,6 +1686,8 @@ try_again: |
575 | 575 | skb = __skb_recv_udp(sk, flags, noblock, &peeked, &off, &err); |
576 | 576 | if (!skb) |
@@ -580,8 +580,8 @@ | ||
580 | 580 | |
581 | 581 | ulen = udp_skb_len(skb); |
582 | 582 | copied = len; |
583 | ---- linux-4.19.244.orig/net/ipv6/raw.c | |
584 | -+++ linux-4.19.244/net/ipv6/raw.c | |
583 | +--- linux-4.19.248.orig/net/ipv6/raw.c | |
584 | ++++ linux-4.19.248/net/ipv6/raw.c | |
585 | 585 | @@ -485,6 +485,10 @@ static int rawv6_recvmsg(struct sock *sk |
586 | 586 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
587 | 587 | if (!skb) |
@@ -593,8 +593,8 @@ | ||
593 | 593 | |
594 | 594 | copied = skb->len; |
595 | 595 | if (copied > len) { |
596 | ---- linux-4.19.244.orig/net/ipv6/udp.c | |
597 | -+++ linux-4.19.244/net/ipv6/udp.c | |
596 | +--- linux-4.19.248.orig/net/ipv6/udp.c | |
597 | ++++ linux-4.19.248/net/ipv6/udp.c | |
598 | 598 | @@ -347,6 +347,8 @@ try_again: |
599 | 599 | skb = __skb_recv_udp(sk, flags, noblock, &peeked, &off, &err); |
600 | 600 | if (!skb) |
@@ -604,8 +604,8 @@ | ||
604 | 604 | |
605 | 605 | ulen = udp6_skb_len(skb); |
606 | 606 | copied = len; |
607 | ---- linux-4.19.244.orig/net/socket.c | |
608 | -+++ linux-4.19.244/net/socket.c | |
607 | +--- linux-4.19.248.orig/net/socket.c | |
608 | ++++ linux-4.19.248/net/socket.c | |
609 | 609 | @@ -1702,6 +1702,10 @@ int __sys_accept4(int fd, struct sockadd |
610 | 610 | if (err < 0) |
611 | 611 | goto out_fd; |
@@ -617,8 +617,8 @@ | ||
617 | 617 | if (upeer_sockaddr) { |
618 | 618 | len = newsock->ops->getname(newsock, |
619 | 619 | (struct sockaddr *)&address, 2); |
620 | ---- linux-4.19.244.orig/net/unix/af_unix.c | |
621 | -+++ linux-4.19.244/net/unix/af_unix.c | |
620 | +--- linux-4.19.248.orig/net/unix/af_unix.c | |
621 | ++++ linux-4.19.248/net/unix/af_unix.c | |
622 | 622 | @@ -2169,6 +2169,10 @@ static int unix_dgram_recvmsg(struct soc |
623 | 623 | EPOLLOUT | EPOLLWRNORM | |
624 | 624 | EPOLLWRBAND); |
@@ -638,8 +638,8 @@ | ||
638 | 638 | mutex_unlock(&u->iolock); |
639 | 639 | out: |
640 | 640 | return err; |
641 | ---- linux-4.19.244.orig/security/Kconfig | |
642 | -+++ linux-4.19.244/security/Kconfig | |
641 | +--- linux-4.19.248.orig/security/Kconfig | |
642 | ++++ linux-4.19.248/security/Kconfig | |
643 | 643 | @@ -279,5 +279,7 @@ config DEFAULT_SECURITY |
644 | 644 | default "apparmor" if DEFAULT_SECURITY_APPARMOR |
645 | 645 | default "" if DEFAULT_SECURITY_DAC |
@@ -648,8 +648,8 @@ | ||
648 | 648 | + |
649 | 649 | endmenu |
650 | 650 | |
651 | ---- linux-4.19.244.orig/security/Makefile | |
652 | -+++ linux-4.19.244/security/Makefile | |
651 | +--- linux-4.19.248.orig/security/Makefile | |
652 | ++++ linux-4.19.248/security/Makefile | |
653 | 653 | @@ -30,3 +30,6 @@ obj-$(CONFIG_CGROUP_DEVICE) += device_c |
654 | 654 | # Object integrity file lists |
655 | 655 | subdir-$(CONFIG_INTEGRITY) += integrity |
@@ -657,8 +657,8 @@ | ||
657 | 657 | + |
658 | 658 | +subdir-$(CONFIG_CCSECURITY) += ccsecurity |
659 | 659 | +obj-$(CONFIG_CCSECURITY) += ccsecurity/ |
660 | ---- linux-4.19.244.orig/security/security.c | |
661 | -+++ linux-4.19.244/security/security.c | |
660 | +--- linux-4.19.248.orig/security/security.c | |
661 | ++++ linux-4.19.248/security/security.c | |
662 | 662 | @@ -984,12 +984,19 @@ int security_file_open(struct file *file |
663 | 663 | |
664 | 664 | int security_task_alloc(struct task_struct *task, unsigned long clone_flags) |
@@ -1,6 +1,6 @@ | ||
1 | -This is TOMOYO Linux patch for kernel 4.9.315. | |
1 | +This is TOMOYO Linux patch for kernel 4.9.319. | |
2 | 2 | |
3 | -Source code for this patch is https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.315.tar.xz | |
3 | +Source code for this patch is https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.319.tar.xz | |
4 | 4 | --- |
5 | 5 | fs/exec.c | 2 - |
6 | 6 | fs/open.c | 2 + |
@@ -28,8 +28,8 @@ | ||
28 | 28 | security/Makefile | 3 ++ |
29 | 29 | 24 files changed, 147 insertions(+), 26 deletions(-) |
30 | 30 | |
31 | ---- linux-4.9.315.orig/fs/exec.c | |
32 | -+++ linux-4.9.315/fs/exec.c | |
31 | +--- linux-4.9.319.orig/fs/exec.c | |
32 | ++++ linux-4.9.319/fs/exec.c | |
33 | 33 | @@ -1662,7 +1662,7 @@ static int exec_binprm(struct linux_binp |
34 | 34 | old_vpid = task_pid_nr_ns(current, task_active_pid_ns(current->parent)); |
35 | 35 | rcu_read_unlock(); |
@@ -39,8 +39,8 @@ | ||
39 | 39 | if (ret >= 0) { |
40 | 40 | audit_bprm(bprm); |
41 | 41 | trace_sched_process_exec(current, old_pid, bprm); |
42 | ---- linux-4.9.315.orig/fs/open.c | |
43 | -+++ linux-4.9.315/fs/open.c | |
42 | +--- linux-4.9.319.orig/fs/open.c | |
43 | ++++ linux-4.9.319/fs/open.c | |
44 | 44 | @@ -1173,6 +1173,8 @@ EXPORT_SYMBOL(sys_close); |
45 | 45 | */ |
46 | 46 | SYSCALL_DEFINE0(vhangup) |
@@ -50,8 +50,8 @@ | ||
50 | 50 | if (capable(CAP_SYS_TTY_CONFIG)) { |
51 | 51 | tty_vhangup_self(); |
52 | 52 | return 0; |
53 | ---- linux-4.9.315.orig/fs/proc/version.c | |
54 | -+++ linux-4.9.315/fs/proc/version.c | |
53 | +--- linux-4.9.319.orig/fs/proc/version.c | |
54 | ++++ linux-4.9.319/fs/proc/version.c | |
55 | 55 | @@ -32,3 +32,10 @@ static int __init proc_version_init(void |
56 | 56 | return 0; |
57 | 57 | } |
@@ -59,12 +59,12 @@ | ||
59 | 59 | + |
60 | 60 | +static int __init ccs_show_version(void) |
61 | 61 | +{ |
62 | -+ printk(KERN_INFO "Hook version: 4.9.315 2022/05/23\n"); | |
62 | ++ printk(KERN_INFO "Hook version: 4.9.319 2022/06/17\n"); | |
63 | 63 | + return 0; |
64 | 64 | +} |
65 | 65 | +fs_initcall(ccs_show_version); |
66 | ---- linux-4.9.315.orig/include/linux/init_task.h | |
67 | -+++ linux-4.9.315/include/linux/init_task.h | |
66 | +--- linux-4.9.319.orig/include/linux/init_task.h | |
67 | ++++ linux-4.9.319/include/linux/init_task.h | |
68 | 68 | @@ -193,6 +193,14 @@ extern struct task_group root_task_group |
69 | 69 | # define INIT_TASK_TI(tsk) |
70 | 70 | #endif |
@@ -88,8 +88,8 @@ | ||
88 | 88 | } |
89 | 89 | |
90 | 90 | |
91 | ---- linux-4.9.315.orig/include/linux/sched.h | |
92 | -+++ linux-4.9.315/include/linux/sched.h | |
91 | +--- linux-4.9.319.orig/include/linux/sched.h | |
92 | ++++ linux-4.9.319/include/linux/sched.h | |
93 | 93 | @@ -6,6 +6,8 @@ |
94 | 94 | #include <linux/sched/prio.h> |
95 | 95 |
@@ -110,8 +110,8 @@ | ||
110 | 110 | /* CPU-specific state of this task */ |
111 | 111 | struct thread_struct thread; |
112 | 112 | /* |
113 | ---- linux-4.9.315.orig/include/linux/security.h | |
114 | -+++ linux-4.9.315/include/linux/security.h | |
113 | +--- linux-4.9.319.orig/include/linux/security.h | |
114 | ++++ linux-4.9.319/include/linux/security.h | |
115 | 115 | @@ -55,6 +55,7 @@ struct msg_queue; |
116 | 116 | struct xattr; |
117 | 117 | struct xfrm_sec_ctx; |
@@ -318,8 +318,8 @@ | ||
318 | 318 | } |
319 | 319 | #endif /* CONFIG_SECURITY_PATH */ |
320 | 320 | |
321 | ---- linux-4.9.315.orig/include/net/ip.h | |
322 | -+++ linux-4.9.315/include/net/ip.h | |
321 | +--- linux-4.9.319.orig/include/net/ip.h | |
322 | ++++ linux-4.9.319/include/net/ip.h | |
323 | 323 | @@ -254,6 +254,8 @@ void inet_get_local_port_range(struct ne |
324 | 324 | #ifdef CONFIG_SYSCTL |
325 | 325 | static inline int inet_is_local_reserved_port(struct net *net, int port) |
@@ -338,8 +338,8 @@ | ||
338 | 338 | return 0; |
339 | 339 | } |
340 | 340 | #endif |
341 | ---- linux-4.9.315.orig/kernel/fork.c | |
342 | -+++ linux-4.9.315/kernel/fork.c | |
341 | +--- linux-4.9.319.orig/kernel/fork.c | |
342 | ++++ linux-4.9.319/kernel/fork.c | |
343 | 343 | @@ -395,6 +395,7 @@ void __put_task_struct(struct task_struc |
344 | 344 | delayacct_tsk_free(tsk); |
345 | 345 | put_signal_struct(tsk->signal); |
@@ -366,8 +366,8 @@ | ||
366 | 366 | bad_fork_cleanup_perf: |
367 | 367 | perf_event_free_task(p); |
368 | 368 | bad_fork_cleanup_policy: |
369 | ---- linux-4.9.315.orig/kernel/kexec.c | |
370 | -+++ linux-4.9.315/kernel/kexec.c | |
369 | +--- linux-4.9.319.orig/kernel/kexec.c | |
370 | ++++ linux-4.9.319/kernel/kexec.c | |
371 | 371 | @@ -17,7 +17,7 @@ |
372 | 372 | #include <linux/syscalls.h> |
373 | 373 | #include <linux/vmalloc.h> |
@@ -386,8 +386,8 @@ | ||
386 | 386 | |
387 | 387 | /* |
388 | 388 | * Verify we have a legal set of flags |
389 | ---- linux-4.9.315.orig/kernel/module.c | |
390 | -+++ linux-4.9.315/kernel/module.c | |
389 | +--- linux-4.9.319.orig/kernel/module.c | |
390 | ++++ linux-4.9.319/kernel/module.c | |
391 | 391 | @@ -63,6 +63,7 @@ |
392 | 392 | #include <linux/dynamic_debug.h> |
393 | 393 | #include <uapi/linux/module.h> |
@@ -414,9 +414,9 @@ | ||
414 | 414 | |
415 | 415 | return 0; |
416 | 416 | } |
417 | ---- linux-4.9.315.orig/kernel/ptrace.c | |
418 | -+++ linux-4.9.315/kernel/ptrace.c | |
419 | -@@ -1179,6 +1179,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
417 | +--- linux-4.9.319.orig/kernel/ptrace.c | |
418 | ++++ linux-4.9.319/kernel/ptrace.c | |
419 | +@@ -1178,6 +1178,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
420 | 420 | { |
421 | 421 | struct task_struct *child; |
422 | 422 | long ret; |
@@ -428,7 +428,7 @@ | ||
428 | 428 | |
429 | 429 | if (request == PTRACE_TRACEME) { |
430 | 430 | ret = ptrace_traceme(); |
431 | -@@ -1328,6 +1333,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
431 | +@@ -1327,6 +1332,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
432 | 432 | { |
433 | 433 | struct task_struct *child; |
434 | 434 | long ret; |
@@ -440,8 +440,8 @@ | ||
440 | 440 | |
441 | 441 | if (request == PTRACE_TRACEME) { |
442 | 442 | ret = ptrace_traceme(); |
443 | ---- linux-4.9.315.orig/kernel/reboot.c | |
444 | -+++ linux-4.9.315/kernel/reboot.c | |
443 | +--- linux-4.9.319.orig/kernel/reboot.c | |
444 | ++++ linux-4.9.319/kernel/reboot.c | |
445 | 445 | @@ -16,6 +16,7 @@ |
446 | 446 | #include <linux/syscalls.h> |
447 | 447 | #include <linux/syscore_ops.h> |
@@ -459,8 +459,8 @@ | ||
459 | 459 | |
460 | 460 | /* |
461 | 461 | * If pid namespaces are enabled and the current task is in a child |
462 | ---- linux-4.9.315.orig/kernel/sched/core.c | |
463 | -+++ linux-4.9.315/kernel/sched/core.c | |
462 | +--- linux-4.9.319.orig/kernel/sched/core.c | |
463 | ++++ linux-4.9.319/kernel/sched/core.c | |
464 | 464 | @@ -3817,6 +3817,8 @@ int can_nice(const struct task_struct *p |
465 | 465 | SYSCALL_DEFINE1(nice, int, increment) |
466 | 466 | { |
@@ -470,8 +470,8 @@ | ||
470 | 470 | |
471 | 471 | /* |
472 | 472 | * Setpriority might change our priority at the same moment. |
473 | ---- linux-4.9.315.orig/kernel/signal.c | |
474 | -+++ linux-4.9.315/kernel/signal.c | |
473 | +--- linux-4.9.319.orig/kernel/signal.c | |
474 | ++++ linux-4.9.319/kernel/signal.c | |
475 | 475 | @@ -2930,6 +2930,8 @@ SYSCALL_DEFINE4(rt_sigtimedwait, const s |
476 | 476 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
477 | 477 | { |
@@ -517,8 +517,8 @@ | ||
517 | 517 | |
518 | 518 | return do_send_specific(tgid, pid, sig, info); |
519 | 519 | } |
520 | ---- linux-4.9.315.orig/kernel/sys.c | |
521 | -+++ linux-4.9.315/kernel/sys.c | |
520 | +--- linux-4.9.319.orig/kernel/sys.c | |
521 | ++++ linux-4.9.319/kernel/sys.c | |
522 | 522 | @@ -185,6 +185,10 @@ SYSCALL_DEFINE3(setpriority, int, which, |
523 | 523 | |
524 | 524 | if (which > PRIO_USER || which < PRIO_PROCESS) |
@@ -548,8 +548,8 @@ | ||
548 | 548 | |
549 | 549 | errno = -EFAULT; |
550 | 550 | if (!copy_from_user(tmp, name, len)) { |
551 | ---- linux-4.9.315.orig/kernel/time/ntp.c | |
552 | -+++ linux-4.9.315/kernel/time/ntp.c | |
551 | +--- linux-4.9.319.orig/kernel/time/ntp.c | |
552 | ++++ linux-4.9.319/kernel/time/ntp.c | |
553 | 553 | @@ -17,6 +17,7 @@ |
554 | 554 | #include <linux/module.h> |
555 | 555 | #include <linux/rtc.h> |
@@ -583,8 +583,8 @@ | ||
583 | 583 | |
584 | 584 | if (txc->modes & ADJ_NANO) { |
585 | 585 | struct timespec ts; |
586 | ---- linux-4.9.315.orig/net/ipv4/raw.c | |
587 | -+++ linux-4.9.315/net/ipv4/raw.c | |
586 | +--- linux-4.9.319.orig/net/ipv4/raw.c | |
587 | ++++ linux-4.9.319/net/ipv4/raw.c | |
588 | 588 | @@ -749,6 +749,10 @@ static int raw_recvmsg(struct sock *sk, |
589 | 589 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
590 | 590 | if (!skb) |
@@ -596,8 +596,8 @@ | ||
596 | 596 | |
597 | 597 | copied = skb->len; |
598 | 598 | if (len < copied) { |
599 | ---- linux-4.9.315.orig/net/ipv4/udp.c | |
600 | -+++ linux-4.9.315/net/ipv4/udp.c | |
599 | +--- linux-4.9.319.orig/net/ipv4/udp.c | |
600 | ++++ linux-4.9.319/net/ipv4/udp.c | |
601 | 601 | @@ -1271,6 +1271,8 @@ try_again: |
602 | 602 | &peeked, &off, &err); |
603 | 603 | if (!skb) |
@@ -607,8 +607,8 @@ | ||
607 | 607 | |
608 | 608 | ulen = skb->len; |
609 | 609 | copied = len; |
610 | ---- linux-4.9.315.orig/net/ipv6/raw.c | |
611 | -+++ linux-4.9.315/net/ipv6/raw.c | |
610 | +--- linux-4.9.319.orig/net/ipv6/raw.c | |
611 | ++++ linux-4.9.319/net/ipv6/raw.c | |
612 | 612 | @@ -480,6 +480,10 @@ static int rawv6_recvmsg(struct sock *sk |
613 | 613 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
614 | 614 | if (!skb) |
@@ -620,8 +620,8 @@ | ||
620 | 620 | |
621 | 621 | copied = skb->len; |
622 | 622 | if (copied > len) { |
623 | ---- linux-4.9.315.orig/net/ipv6/udp.c | |
624 | -+++ linux-4.9.315/net/ipv6/udp.c | |
623 | +--- linux-4.9.319.orig/net/ipv6/udp.c | |
624 | ++++ linux-4.9.319/net/ipv6/udp.c | |
625 | 625 | @@ -348,6 +348,8 @@ try_again: |
626 | 626 | &peeked, &off, &err); |
627 | 627 | if (!skb) |
@@ -631,8 +631,8 @@ | ||
631 | 631 | |
632 | 632 | ulen = skb->len; |
633 | 633 | copied = len; |
634 | ---- linux-4.9.315.orig/net/socket.c | |
635 | -+++ linux-4.9.315/net/socket.c | |
634 | +--- linux-4.9.319.orig/net/socket.c | |
635 | ++++ linux-4.9.319/net/socket.c | |
636 | 636 | @@ -1482,6 +1482,10 @@ SYSCALL_DEFINE4(accept4, int, fd, struct |
637 | 637 | if (err < 0) |
638 | 638 | goto out_fd; |
@@ -644,8 +644,8 @@ | ||
644 | 644 | if (upeer_sockaddr) { |
645 | 645 | if (newsock->ops->getname(newsock, (struct sockaddr *)&address, |
646 | 646 | &len, 2) < 0) { |
647 | ---- linux-4.9.315.orig/net/unix/af_unix.c | |
648 | -+++ linux-4.9.315/net/unix/af_unix.c | |
647 | +--- linux-4.9.319.orig/net/unix/af_unix.c | |
648 | ++++ linux-4.9.319/net/unix/af_unix.c | |
649 | 649 | @@ -2167,6 +2167,10 @@ static int unix_dgram_recvmsg(struct soc |
650 | 650 | POLLOUT | POLLWRNORM | |
651 | 651 | POLLWRBAND); |
@@ -665,8 +665,8 @@ | ||
665 | 665 | mutex_unlock(&u->iolock); |
666 | 666 | out: |
667 | 667 | return err; |
668 | ---- linux-4.9.315.orig/security/Kconfig | |
669 | -+++ linux-4.9.315/security/Kconfig | |
668 | +--- linux-4.9.319.orig/security/Kconfig | |
669 | ++++ linux-4.9.319/security/Kconfig | |
670 | 670 | @@ -214,5 +214,7 @@ config DEFAULT_SECURITY |
671 | 671 | default "apparmor" if DEFAULT_SECURITY_APPARMOR |
672 | 672 | default "" if DEFAULT_SECURITY_DAC |
@@ -675,8 +675,8 @@ | ||
675 | 675 | + |
676 | 676 | endmenu |
677 | 677 | |
678 | ---- linux-4.9.315.orig/security/Makefile | |
679 | -+++ linux-4.9.315/security/Makefile | |
678 | +--- linux-4.9.319.orig/security/Makefile | |
679 | ++++ linux-4.9.319/security/Makefile | |
680 | 680 | @@ -29,3 +29,6 @@ obj-$(CONFIG_CGROUP_DEVICE) += device_c |
681 | 681 | # Object integrity file lists |
682 | 682 | subdir-$(CONFIG_INTEGRITY) += integrity |
@@ -1,6 +1,6 @@ | ||
1 | -This is TOMOYO Linux patch for kernel 5.10.117. | |
1 | +This is TOMOYO Linux patch for kernel 5.10.123. | |
2 | 2 | |
3 | -Source code for this patch is https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.117.tar.xz | |
3 | +Source code for this patch is https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.123.tar.xz | |
4 | 4 | --- |
5 | 5 | fs/exec.c | 2 - |
6 | 6 | fs/open.c | 2 + |
@@ -28,8 +28,8 @@ | ||
28 | 28 | security/security.c | 5 ++- |
29 | 29 | 24 files changed, 160 insertions(+), 30 deletions(-) |
30 | 30 | |
31 | ---- linux-5.10.117.orig/fs/exec.c | |
32 | -+++ linux-5.10.117/fs/exec.c | |
31 | +--- linux-5.10.123.orig/fs/exec.c | |
32 | ++++ linux-5.10.123/fs/exec.c | |
33 | 33 | @@ -1823,7 +1823,7 @@ static int bprm_execve(struct linux_binp |
34 | 34 | if (retval) |
35 | 35 | goto out; |
@@ -39,8 +39,8 @@ | ||
39 | 39 | if (retval < 0) |
40 | 40 | goto out; |
41 | 41 | |
42 | ---- linux-5.10.117.orig/fs/open.c | |
43 | -+++ linux-5.10.117/fs/open.c | |
42 | +--- linux-5.10.123.orig/fs/open.c | |
43 | ++++ linux-5.10.123/fs/open.c | |
44 | 44 | @@ -1339,6 +1339,8 @@ SYSCALL_DEFINE3(close_range, unsigned in |
45 | 45 | */ |
46 | 46 | SYSCALL_DEFINE0(vhangup) |
@@ -50,8 +50,8 @@ | ||
50 | 50 | if (capable(CAP_SYS_TTY_CONFIG)) { |
51 | 51 | tty_vhangup_self(); |
52 | 52 | return 0; |
53 | ---- linux-5.10.117.orig/fs/proc/version.c | |
54 | -+++ linux-5.10.117/fs/proc/version.c | |
53 | +--- linux-5.10.123.orig/fs/proc/version.c | |
54 | ++++ linux-5.10.123/fs/proc/version.c | |
55 | 55 | @@ -21,3 +21,10 @@ static int __init proc_version_init(void |
56 | 56 | return 0; |
57 | 57 | } |
@@ -59,12 +59,12 @@ | ||
59 | 59 | + |
60 | 60 | +static int __init ccs_show_version(void) |
61 | 61 | +{ |
62 | -+ printk(KERN_INFO "Hook version: 5.10.117 2022/05/23\n"); | |
62 | ++ printk(KERN_INFO "Hook version: 5.10.123 2022/06/17\n"); | |
63 | 63 | + return 0; |
64 | 64 | +} |
65 | 65 | +fs_initcall(ccs_show_version); |
66 | ---- linux-5.10.117.orig/include/linux/sched.h | |
67 | -+++ linux-5.10.117/include/linux/sched.h | |
66 | +--- linux-5.10.123.orig/include/linux/sched.h | |
67 | ++++ linux-5.10.123/include/linux/sched.h | |
68 | 68 | @@ -41,6 +41,7 @@ struct backing_dev_info; |
69 | 69 | struct bio_list; |
70 | 70 | struct blk_plug; |
@@ -84,8 +84,8 @@ | ||
84 | 84 | |
85 | 85 | #ifdef CONFIG_GCC_PLUGIN_STACKLEAK |
86 | 86 | unsigned long lowest_stack; |
87 | ---- linux-5.10.117.orig/include/linux/security.h | |
88 | -+++ linux-5.10.117/include/linux/security.h | |
87 | +--- linux-5.10.123.orig/include/linux/security.h | |
88 | ++++ linux-5.10.123/include/linux/security.h | |
89 | 89 | @@ -59,6 +59,7 @@ struct fs_parameter; |
90 | 90 | enum fs_value_type; |
91 | 91 | struct watch; |
@@ -94,7 +94,7 @@ | ||
94 | 94 | |
95 | 95 | /* Default (no) options for the capable function */ |
96 | 96 | #define CAP_OPT_NONE 0x0 |
97 | -@@ -572,7 +573,10 @@ static inline int security_syslog(int ty | |
97 | +@@ -574,7 +575,10 @@ static inline int security_syslog(int ty | |
98 | 98 | static inline int security_settime64(const struct timespec64 *ts, |
99 | 99 | const struct timezone *tz) |
100 | 100 | { |
@@ -106,7 +106,7 @@ | ||
106 | 106 | } |
107 | 107 | |
108 | 108 | static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages) |
109 | -@@ -655,18 +659,18 @@ static inline int security_sb_mount(cons | |
109 | +@@ -657,18 +661,18 @@ static inline int security_sb_mount(cons | |
110 | 110 | const char *type, unsigned long flags, |
111 | 111 | void *data) |
112 | 112 | { |
@@ -128,7 +128,7 @@ | ||
128 | 128 | } |
129 | 129 | |
130 | 130 | static inline int security_sb_set_mnt_opts(struct super_block *sb, |
131 | -@@ -694,7 +698,7 @@ static inline int security_add_mnt_opt(c | |
131 | +@@ -696,7 +700,7 @@ static inline int security_add_mnt_opt(c | |
132 | 132 | static inline int security_move_mount(const struct path *from_path, |
133 | 133 | const struct path *to_path) |
134 | 134 | { |
@@ -137,7 +137,7 @@ | ||
137 | 137 | } |
138 | 138 | |
139 | 139 | static inline int security_path_notify(const struct path *path, u64 mask, |
140 | -@@ -828,7 +832,7 @@ static inline int security_inode_setattr | |
140 | +@@ -830,7 +834,7 @@ static inline int security_inode_setattr | |
141 | 141 | |
142 | 142 | static inline int security_inode_getattr(const struct path *path) |
143 | 143 | { |
@@ -146,7 +146,7 @@ | ||
146 | 146 | } |
147 | 147 | |
148 | 148 | static inline int security_inode_setxattr(struct dentry *dentry, |
149 | -@@ -920,7 +924,7 @@ static inline void security_file_free(st | |
149 | +@@ -922,7 +926,7 @@ static inline void security_file_free(st | |
150 | 150 | static inline int security_file_ioctl(struct file *file, unsigned int cmd, |
151 | 151 | unsigned long arg) |
152 | 152 | { |
@@ -155,7 +155,7 @@ | ||
155 | 155 | } |
156 | 156 | |
157 | 157 | static inline int security_mmap_file(struct file *file, unsigned long prot, |
158 | -@@ -949,7 +953,7 @@ static inline int security_file_lock(str | |
158 | +@@ -951,7 +955,7 @@ static inline int security_file_lock(str | |
159 | 159 | static inline int security_file_fcntl(struct file *file, unsigned int cmd, |
160 | 160 | unsigned long arg) |
161 | 161 | { |
@@ -164,7 +164,7 @@ | ||
164 | 164 | } |
165 | 165 | |
166 | 166 | static inline void security_file_set_fowner(struct file *file) |
167 | -@@ -971,17 +975,19 @@ static inline int security_file_receive( | |
167 | +@@ -973,17 +977,19 @@ static inline int security_file_receive( | |
168 | 168 | |
169 | 169 | static inline int security_file_open(struct file *file) |
170 | 170 | { |
@@ -187,7 +187,7 @@ | ||
187 | 187 | |
188 | 188 | static inline int security_cred_alloc_blank(struct cred *cred, gfp_t gfp) |
189 | 189 | { |
190 | -@@ -1402,7 +1408,7 @@ static inline int security_unix_may_send | |
190 | +@@ -1405,7 +1411,7 @@ static inline int security_unix_may_send | |
191 | 191 | static inline int security_socket_create(int family, int type, |
192 | 192 | int protocol, int kern) |
193 | 193 | { |
@@ -196,7 +196,7 @@ | ||
196 | 196 | } |
197 | 197 | |
198 | 198 | static inline int security_socket_post_create(struct socket *sock, |
199 | -@@ -1423,19 +1429,19 @@ static inline int security_socket_bind(s | |
199 | +@@ -1426,19 +1432,19 @@ static inline int security_socket_bind(s | |
200 | 200 | struct sockaddr *address, |
201 | 201 | int addrlen) |
202 | 202 | { |
@@ -219,7 +219,7 @@ | ||
219 | 219 | } |
220 | 220 | |
221 | 221 | static inline int security_socket_accept(struct socket *sock, |
222 | -@@ -1447,7 +1453,7 @@ static inline int security_socket_accept | |
222 | +@@ -1450,7 +1456,7 @@ static inline int security_socket_accept | |
223 | 223 | static inline int security_socket_sendmsg(struct socket *sock, |
224 | 224 | struct msghdr *msg, int size) |
225 | 225 | { |
@@ -228,7 +228,7 @@ | ||
228 | 228 | } |
229 | 229 | |
230 | 230 | static inline int security_socket_recvmsg(struct socket *sock, |
231 | -@@ -1734,42 +1740,42 @@ int security_path_chroot(const struct pa | |
231 | +@@ -1741,42 +1747,42 @@ int security_path_chroot(const struct pa | |
232 | 232 | #else /* CONFIG_SECURITY_PATH */ |
233 | 233 | static inline int security_path_unlink(const struct path *dir, struct dentry *dentry) |
234 | 234 | { |
@@ -278,7 +278,7 @@ | ||
278 | 278 | } |
279 | 279 | |
280 | 280 | static inline int security_path_rename(const struct path *old_dir, |
281 | -@@ -1778,22 +1784,32 @@ static inline int security_path_rename(c | |
281 | +@@ -1785,22 +1791,32 @@ static inline int security_path_rename(c | |
282 | 282 | struct dentry *new_dentry, |
283 | 283 | unsigned int flags) |
284 | 284 | { |
@@ -315,9 +315,9 @@ | ||
315 | 315 | } |
316 | 316 | #endif /* CONFIG_SECURITY_PATH */ |
317 | 317 | |
318 | ---- linux-5.10.117.orig/include/net/ip.h | |
319 | -+++ linux-5.10.117/include/net/ip.h | |
320 | -@@ -339,6 +339,8 @@ void inet_get_local_port_range(struct ne | |
318 | +--- linux-5.10.123.orig/include/net/ip.h | |
319 | ++++ linux-5.10.123/include/net/ip.h | |
320 | +@@ -340,6 +340,8 @@ void inet_get_local_port_range(struct ne | |
321 | 321 | #ifdef CONFIG_SYSCTL |
322 | 322 | static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port) |
323 | 323 | { |
@@ -326,7 +326,7 @@ | ||
326 | 326 | if (!net->ipv4.sysctl_local_reserved_ports) |
327 | 327 | return false; |
328 | 328 | return test_bit(port, net->ipv4.sysctl_local_reserved_ports); |
329 | -@@ -357,6 +359,8 @@ static inline bool inet_port_requires_bi | |
329 | +@@ -358,6 +360,8 @@ static inline bool inet_port_requires_bi | |
330 | 330 | #else |
331 | 331 | static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port) |
332 | 332 | { |
@@ -335,8 +335,8 @@ | ||
335 | 335 | return false; |
336 | 336 | } |
337 | 337 | |
338 | ---- linux-5.10.117.orig/init/init_task.c | |
339 | -+++ linux-5.10.117/init/init_task.c | |
338 | +--- linux-5.10.123.orig/init/init_task.c | |
339 | ++++ linux-5.10.123/init/init_task.c | |
340 | 340 | @@ -213,6 +213,10 @@ struct task_struct init_task |
341 | 341 | #ifdef CONFIG_SECCOMP_FILTER |
342 | 342 | .seccomp = { .filter_count = ATOMIC_INIT(0) }, |
@@ -348,8 +348,8 @@ | ||
348 | 348 | }; |
349 | 349 | EXPORT_SYMBOL(init_task); |
350 | 350 | |
351 | ---- linux-5.10.117.orig/kernel/kexec.c | |
352 | -+++ linux-5.10.117/kernel/kexec.c | |
351 | +--- linux-5.10.123.orig/kernel/kexec.c | |
352 | ++++ linux-5.10.123/kernel/kexec.c | |
353 | 353 | @@ -16,7 +16,7 @@ |
354 | 354 | #include <linux/syscalls.h> |
355 | 355 | #include <linux/vmalloc.h> |
@@ -368,8 +368,8 @@ | ||
368 | 368 | |
369 | 369 | /* Permit LSMs and IMA to fail the kexec */ |
370 | 370 | result = security_kernel_load_data(LOADING_KEXEC_IMAGE, false); |
371 | ---- linux-5.10.117.orig/kernel/module.c | |
372 | -+++ linux-5.10.117/kernel/module.c | |
371 | +--- linux-5.10.123.orig/kernel/module.c | |
372 | ++++ linux-5.10.123/kernel/module.c | |
373 | 373 | @@ -59,6 +59,7 @@ |
374 | 374 | #include <linux/audit.h> |
375 | 375 | #include <uapi/linux/module.h> |
@@ -387,7 +387,7 @@ | ||
387 | 387 | |
388 | 388 | if (strncpy_from_user(name, name_user, MODULE_NAME_LEN-1) < 0) |
389 | 389 | return -EFAULT; |
390 | -@@ -3807,6 +3810,8 @@ static int may_init_module(void) | |
390 | +@@ -3811,6 +3814,8 @@ static int may_init_module(void) | |
391 | 391 | { |
392 | 392 | if (!capable(CAP_SYS_MODULE) || modules_disabled) |
393 | 393 | return -EPERM; |
@@ -396,9 +396,9 @@ | ||
396 | 396 | |
397 | 397 | return 0; |
398 | 398 | } |
399 | ---- linux-5.10.117.orig/kernel/ptrace.c | |
400 | -+++ linux-5.10.117/kernel/ptrace.c | |
401 | -@@ -1271,6 +1271,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
399 | +--- linux-5.10.123.orig/kernel/ptrace.c | |
400 | ++++ linux-5.10.123/kernel/ptrace.c | |
401 | +@@ -1270,6 +1270,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
402 | 402 | { |
403 | 403 | struct task_struct *child; |
404 | 404 | long ret; |
@@ -410,7 +410,7 @@ | ||
410 | 410 | |
411 | 411 | if (request == PTRACE_TRACEME) { |
412 | 412 | ret = ptrace_traceme(); |
413 | -@@ -1418,6 +1423,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
413 | +@@ -1417,6 +1422,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
414 | 414 | { |
415 | 415 | struct task_struct *child; |
416 | 416 | long ret; |
@@ -422,8 +422,8 @@ | ||
422 | 422 | |
423 | 423 | if (request == PTRACE_TRACEME) { |
424 | 424 | ret = ptrace_traceme(); |
425 | ---- linux-5.10.117.orig/kernel/reboot.c | |
426 | -+++ linux-5.10.117/kernel/reboot.c | |
425 | +--- linux-5.10.123.orig/kernel/reboot.c | |
426 | ++++ linux-5.10.123/kernel/reboot.c | |
427 | 427 | @@ -17,6 +17,7 @@ |
428 | 428 | #include <linux/syscalls.h> |
429 | 429 | #include <linux/syscore_ops.h> |
@@ -441,8 +441,8 @@ | ||
441 | 441 | |
442 | 442 | /* |
443 | 443 | * If pid namespaces are enabled and the current task is in a child |
444 | ---- linux-5.10.117.orig/kernel/sched/core.c | |
445 | -+++ linux-5.10.117/kernel/sched/core.c | |
444 | +--- linux-5.10.123.orig/kernel/sched/core.c | |
445 | ++++ linux-5.10.123/kernel/sched/core.c | |
446 | 446 | @@ -5057,6 +5057,8 @@ int can_nice(const struct task_struct *p |
447 | 447 | SYSCALL_DEFINE1(nice, int, increment) |
448 | 448 | { |
@@ -452,8 +452,8 @@ | ||
452 | 452 | |
453 | 453 | /* |
454 | 454 | * Setpriority might change our priority at the same moment. |
455 | ---- linux-5.10.117.orig/kernel/signal.c | |
456 | -+++ linux-5.10.117/kernel/signal.c | |
455 | +--- linux-5.10.123.orig/kernel/signal.c | |
456 | ++++ linux-5.10.123/kernel/signal.c | |
457 | 457 | @@ -3648,6 +3648,8 @@ static inline void prepare_kill_siginfo( |
458 | 458 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
459 | 459 | { |
@@ -521,8 +521,8 @@ | ||
521 | 521 | |
522 | 522 | return do_send_specific(tgid, pid, sig, info); |
523 | 523 | } |
524 | ---- linux-5.10.117.orig/kernel/sys.c | |
525 | -+++ linux-5.10.117/kernel/sys.c | |
524 | +--- linux-5.10.123.orig/kernel/sys.c | |
525 | ++++ linux-5.10.123/kernel/sys.c | |
526 | 526 | @@ -205,6 +205,10 @@ SYSCALL_DEFINE3(setpriority, int, which, |
527 | 527 | |
528 | 528 | if (which > PRIO_USER || which < PRIO_PROCESS) |
@@ -552,9 +552,9 @@ | ||
552 | 552 | |
553 | 553 | errno = -EFAULT; |
554 | 554 | if (!copy_from_user(tmp, name, len)) { |
555 | ---- linux-5.10.117.orig/kernel/time/timekeeping.c | |
556 | -+++ linux-5.10.117/kernel/time/timekeeping.c | |
557 | -@@ -22,6 +22,7 @@ | |
555 | +--- linux-5.10.123.orig/kernel/time/timekeeping.c | |
556 | ++++ linux-5.10.123/kernel/time/timekeeping.c | |
557 | +@@ -23,6 +23,7 @@ | |
558 | 558 | #include <linux/pvclock_gtod.h> |
559 | 559 | #include <linux/compiler.h> |
560 | 560 | #include <linux/audit.h> |
@@ -562,7 +562,7 @@ | ||
562 | 562 | |
563 | 563 | #include "tick-internal.h" |
564 | 564 | #include "ntp_internal.h" |
565 | -@@ -2325,10 +2326,15 @@ static int timekeeping_validate_timex(co | |
565 | +@@ -2326,10 +2327,15 @@ static int timekeeping_validate_timex(co | |
566 | 566 | if (!(txc->modes & ADJ_OFFSET_READONLY) && |
567 | 567 | !capable(CAP_SYS_TIME)) |
568 | 568 | return -EPERM; |
@@ -578,7 +578,7 @@ | ||
578 | 578 | /* |
579 | 579 | * if the quartz is off by more than 10% then |
580 | 580 | * something is VERY wrong! |
581 | -@@ -2343,6 +2349,8 @@ static int timekeeping_validate_timex(co | |
581 | +@@ -2344,6 +2350,8 @@ static int timekeeping_validate_timex(co | |
582 | 582 | /* In order to inject time, you gotta be super-user! */ |
583 | 583 | if (!capable(CAP_SYS_TIME)) |
584 | 584 | return -EPERM; |
@@ -587,8 +587,8 @@ | ||
587 | 587 | |
588 | 588 | /* |
589 | 589 | * Validate if a timespec/timeval used to inject a time |
590 | ---- linux-5.10.117.orig/net/ipv4/raw.c | |
591 | -+++ linux-5.10.117/net/ipv4/raw.c | |
590 | +--- linux-5.10.123.orig/net/ipv4/raw.c | |
591 | ++++ linux-5.10.123/net/ipv4/raw.c | |
592 | 592 | @@ -771,6 +771,10 @@ static int raw_recvmsg(struct sock *sk, |
593 | 593 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
594 | 594 | if (!skb) |
@@ -600,8 +600,8 @@ | ||
600 | 600 | |
601 | 601 | copied = skb->len; |
602 | 602 | if (len < copied) { |
603 | ---- linux-5.10.117.orig/net/ipv4/udp.c | |
604 | -+++ linux-5.10.117/net/ipv4/udp.c | |
603 | +--- linux-5.10.123.orig/net/ipv4/udp.c | |
604 | ++++ linux-5.10.123/net/ipv4/udp.c | |
605 | 605 | @@ -1808,6 +1808,8 @@ try_again: |
606 | 606 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
607 | 607 | if (!skb) |
@@ -611,8 +611,8 @@ | ||
611 | 611 | |
612 | 612 | ulen = udp_skb_len(skb); |
613 | 613 | copied = len; |
614 | ---- linux-5.10.117.orig/net/ipv6/raw.c | |
615 | -+++ linux-5.10.117/net/ipv6/raw.c | |
614 | +--- linux-5.10.123.orig/net/ipv6/raw.c | |
615 | ++++ linux-5.10.123/net/ipv6/raw.c | |
616 | 616 | @@ -480,6 +480,10 @@ static int rawv6_recvmsg(struct sock *sk |
617 | 617 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
618 | 618 | if (!skb) |
@@ -624,8 +624,8 @@ | ||
624 | 624 | |
625 | 625 | copied = skb->len; |
626 | 626 | if (copied > len) { |
627 | ---- linux-5.10.117.orig/net/ipv6/udp.c | |
628 | -+++ linux-5.10.117/net/ipv6/udp.c | |
627 | +--- linux-5.10.123.orig/net/ipv6/udp.c | |
628 | ++++ linux-5.10.123/net/ipv6/udp.c | |
629 | 629 | @@ -344,6 +344,8 @@ try_again: |
630 | 630 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
631 | 631 | if (!skb) |
@@ -635,8 +635,8 @@ | ||
635 | 635 | |
636 | 636 | ulen = udp6_skb_len(skb); |
637 | 637 | copied = len; |
638 | ---- linux-5.10.117.orig/net/socket.c | |
639 | -+++ linux-5.10.117/net/socket.c | |
638 | +--- linux-5.10.123.orig/net/socket.c | |
639 | ++++ linux-5.10.123/net/socket.c | |
640 | 640 | @@ -1744,6 +1744,10 @@ int __sys_accept4_file(struct file *file |
641 | 641 | if (err < 0) |
642 | 642 | goto out_fd; |
@@ -648,8 +648,8 @@ | ||
648 | 648 | if (upeer_sockaddr) { |
649 | 649 | len = newsock->ops->getname(newsock, |
650 | 650 | (struct sockaddr *)&address, 2); |
651 | ---- linux-5.10.117.orig/net/unix/af_unix.c | |
652 | -+++ linux-5.10.117/net/unix/af_unix.c | |
651 | +--- linux-5.10.123.orig/net/unix/af_unix.c | |
652 | ++++ linux-5.10.123/net/unix/af_unix.c | |
653 | 653 | @@ -2197,6 +2197,10 @@ static int unix_dgram_recvmsg(struct soc |
654 | 654 | EPOLLOUT | EPOLLWRNORM | |
655 | 655 | EPOLLWRBAND); |
@@ -669,8 +669,8 @@ | ||
669 | 669 | mutex_unlock(&u->iolock); |
670 | 670 | out: |
671 | 671 | return err; |
672 | ---- linux-5.10.117.orig/security/Kconfig | |
673 | -+++ linux-5.10.117/security/Kconfig | |
672 | +--- linux-5.10.123.orig/security/Kconfig | |
673 | ++++ linux-5.10.123/security/Kconfig | |
674 | 674 | @@ -294,5 +294,7 @@ config LSM |
675 | 675 | |
676 | 676 | source "security/Kconfig.hardening" |
@@ -679,8 +679,8 @@ | ||
679 | 679 | + |
680 | 680 | endmenu |
681 | 681 | |
682 | ---- linux-5.10.117.orig/security/Makefile | |
683 | -+++ linux-5.10.117/security/Makefile | |
682 | +--- linux-5.10.123.orig/security/Makefile | |
683 | ++++ linux-5.10.123/security/Makefile | |
684 | 684 | @@ -36,3 +36,6 @@ obj-$(CONFIG_BPF_LSM) += bpf/ |
685 | 685 | # Object integrity file lists |
686 | 686 | subdir-$(CONFIG_INTEGRITY) += integrity |
@@ -688,9 +688,9 @@ | ||
688 | 688 | + |
689 | 689 | +subdir-$(CONFIG_CCSECURITY) += ccsecurity |
690 | 690 | +obj-$(CONFIG_CCSECURITY) += ccsecurity/ |
691 | ---- linux-5.10.117.orig/security/security.c | |
692 | -+++ linux-5.10.117/security/security.c | |
693 | -@@ -1599,7 +1599,9 @@ int security_task_alloc(struct task_stru | |
691 | +--- linux-5.10.123.orig/security/security.c | |
692 | ++++ linux-5.10.123/security/security.c | |
693 | +@@ -1601,7 +1601,9 @@ int security_task_alloc(struct task_stru | |
694 | 694 | |
695 | 695 | if (rc) |
696 | 696 | return rc; |
@@ -701,7 +701,7 @@ | ||
701 | 701 | if (unlikely(rc)) |
702 | 702 | security_task_free(task); |
703 | 703 | return rc; |
704 | -@@ -1608,6 +1610,7 @@ int security_task_alloc(struct task_stru | |
704 | +@@ -1610,6 +1612,7 @@ int security_task_alloc(struct task_stru | |
705 | 705 | void security_task_free(struct task_struct *task) |
706 | 706 | { |
707 | 707 | call_void_hook(task_free, task); |
@@ -1,6 +1,6 @@ | ||
1 | -This is TOMOYO Linux patch for kernel 5.15.41. | |
1 | +This is TOMOYO Linux patch for kernel 5.15.48. | |
2 | 2 | |
3 | -Source code for this patch is https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.15.41.tar.xz | |
3 | +Source code for this patch is https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.15.48.tar.xz | |
4 | 4 | --- |
5 | 5 | fs/exec.c | 2 - |
6 | 6 | fs/open.c | 2 + |
@@ -28,8 +28,8 @@ | ||
28 | 28 | security/security.c | 5 ++- |
29 | 29 | 24 files changed, 160 insertions(+), 30 deletions(-) |
30 | 30 | |
31 | ---- linux-5.15.41.orig/fs/exec.c | |
32 | -+++ linux-5.15.41/fs/exec.c | |
31 | +--- linux-5.15.48.orig/fs/exec.c | |
32 | ++++ linux-5.15.48/fs/exec.c | |
33 | 33 | @@ -1838,7 +1838,7 @@ static int bprm_execve(struct linux_binp |
34 | 34 | if (retval) |
35 | 35 | goto out; |
@@ -39,8 +39,8 @@ | ||
39 | 39 | if (retval < 0) |
40 | 40 | goto out; |
41 | 41 | |
42 | ---- linux-5.15.41.orig/fs/open.c | |
43 | -+++ linux-5.15.41/fs/open.c | |
42 | +--- linux-5.15.48.orig/fs/open.c | |
43 | ++++ linux-5.15.48/fs/open.c | |
44 | 44 | @@ -1371,6 +1371,8 @@ SYSCALL_DEFINE3(close_range, unsigned in |
45 | 45 | */ |
46 | 46 | SYSCALL_DEFINE0(vhangup) |
@@ -50,8 +50,8 @@ | ||
50 | 50 | if (capable(CAP_SYS_TTY_CONFIG)) { |
51 | 51 | tty_vhangup_self(); |
52 | 52 | return 0; |
53 | ---- linux-5.15.41.orig/fs/proc/version.c | |
54 | -+++ linux-5.15.41/fs/proc/version.c | |
53 | +--- linux-5.15.48.orig/fs/proc/version.c | |
54 | ++++ linux-5.15.48/fs/proc/version.c | |
55 | 55 | @@ -21,3 +21,10 @@ static int __init proc_version_init(void |
56 | 56 | return 0; |
57 | 57 | } |
@@ -59,12 +59,12 @@ | ||
59 | 59 | + |
60 | 60 | +static int __init ccs_show_version(void) |
61 | 61 | +{ |
62 | -+ printk(KERN_INFO "Hook version: 5.15.41 2022/05/23\n"); | |
62 | ++ printk(KERN_INFO "Hook version: 5.15.48 2022/06/17\n"); | |
63 | 63 | + return 0; |
64 | 64 | +} |
65 | 65 | +fs_initcall(ccs_show_version); |
66 | ---- linux-5.15.41.orig/include/linux/sched.h | |
67 | -+++ linux-5.15.41/include/linux/sched.h | |
66 | +--- linux-5.15.48.orig/include/linux/sched.h | |
67 | ++++ linux-5.15.48/include/linux/sched.h | |
68 | 68 | @@ -44,6 +44,7 @@ struct blk_plug; |
69 | 69 | struct bpf_local_storage; |
70 | 70 | struct bpf_run_ctx; |
@@ -84,8 +84,8 @@ | ||
84 | 84 | |
85 | 85 | #ifdef CONFIG_TRACING |
86 | 86 | /* State flags for use by tracers: */ |
87 | ---- linux-5.15.41.orig/include/linux/security.h | |
88 | -+++ linux-5.15.41/include/linux/security.h | |
87 | +--- linux-5.15.48.orig/include/linux/security.h | |
88 | ++++ linux-5.15.48/include/linux/security.h | |
89 | 89 | @@ -59,6 +59,7 @@ struct fs_parameter; |
90 | 90 | enum fs_value_type; |
91 | 91 | struct watch; |
@@ -94,7 +94,7 @@ | ||
94 | 94 | |
95 | 95 | /* Default (no) options for the capable function */ |
96 | 96 | #define CAP_OPT_NONE 0x0 |
97 | -@@ -587,7 +588,10 @@ static inline int security_syslog(int ty | |
97 | +@@ -589,7 +590,10 @@ static inline int security_syslog(int ty | |
98 | 98 | static inline int security_settime64(const struct timespec64 *ts, |
99 | 99 | const struct timezone *tz) |
100 | 100 | { |
@@ -106,7 +106,7 @@ | ||
106 | 106 | } |
107 | 107 | |
108 | 108 | static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages) |
109 | -@@ -680,18 +684,18 @@ static inline int security_sb_mount(cons | |
109 | +@@ -682,18 +686,18 @@ static inline int security_sb_mount(cons | |
110 | 110 | const char *type, unsigned long flags, |
111 | 111 | void *data) |
112 | 112 | { |
@@ -128,7 +128,7 @@ | ||
128 | 128 | } |
129 | 129 | |
130 | 130 | static inline int security_sb_set_mnt_opts(struct super_block *sb, |
131 | -@@ -719,7 +723,7 @@ static inline int security_add_mnt_opt(c | |
131 | +@@ -721,7 +725,7 @@ static inline int security_add_mnt_opt(c | |
132 | 132 | static inline int security_move_mount(const struct path *from_path, |
133 | 133 | const struct path *to_path) |
134 | 134 | { |
@@ -137,7 +137,7 @@ | ||
137 | 137 | } |
138 | 138 | |
139 | 139 | static inline int security_path_notify(const struct path *path, u64 mask, |
140 | -@@ -860,7 +864,7 @@ static inline int security_inode_setattr | |
140 | +@@ -862,7 +866,7 @@ static inline int security_inode_setattr | |
141 | 141 | |
142 | 142 | static inline int security_inode_getattr(const struct path *path) |
143 | 143 | { |
@@ -146,7 +146,7 @@ | ||
146 | 146 | } |
147 | 147 | |
148 | 148 | static inline int security_inode_setxattr(struct user_namespace *mnt_userns, |
149 | -@@ -958,7 +962,7 @@ static inline void security_file_free(st | |
149 | +@@ -960,7 +964,7 @@ static inline void security_file_free(st | |
150 | 150 | static inline int security_file_ioctl(struct file *file, unsigned int cmd, |
151 | 151 | unsigned long arg) |
152 | 152 | { |
@@ -155,7 +155,7 @@ | ||
155 | 155 | } |
156 | 156 | |
157 | 157 | static inline int security_mmap_file(struct file *file, unsigned long prot, |
158 | -@@ -987,7 +991,7 @@ static inline int security_file_lock(str | |
158 | +@@ -989,7 +993,7 @@ static inline int security_file_lock(str | |
159 | 159 | static inline int security_file_fcntl(struct file *file, unsigned int cmd, |
160 | 160 | unsigned long arg) |
161 | 161 | { |
@@ -164,7 +164,7 @@ | ||
164 | 164 | } |
165 | 165 | |
166 | 166 | static inline void security_file_set_fowner(struct file *file) |
167 | -@@ -1009,17 +1013,19 @@ static inline int security_file_receive( | |
167 | +@@ -1011,17 +1015,19 @@ static inline int security_file_receive( | |
168 | 168 | |
169 | 169 | static inline int security_file_open(struct file *file) |
170 | 170 | { |
@@ -187,7 +187,7 @@ | ||
187 | 187 | |
188 | 188 | static inline int security_cred_alloc_blank(struct cred *cred, gfp_t gfp) |
189 | 189 | { |
190 | -@@ -1446,7 +1452,7 @@ static inline int security_unix_may_send | |
190 | +@@ -1448,7 +1454,7 @@ static inline int security_unix_may_send | |
191 | 191 | static inline int security_socket_create(int family, int type, |
192 | 192 | int protocol, int kern) |
193 | 193 | { |
@@ -196,7 +196,7 @@ | ||
196 | 196 | } |
197 | 197 | |
198 | 198 | static inline int security_socket_post_create(struct socket *sock, |
199 | -@@ -1467,19 +1473,19 @@ static inline int security_socket_bind(s | |
199 | +@@ -1469,19 +1475,19 @@ static inline int security_socket_bind(s | |
200 | 200 | struct sockaddr *address, |
201 | 201 | int addrlen) |
202 | 202 | { |
@@ -219,7 +219,7 @@ | ||
219 | 219 | } |
220 | 220 | |
221 | 221 | static inline int security_socket_accept(struct socket *sock, |
222 | -@@ -1491,7 +1497,7 @@ static inline int security_socket_accept | |
222 | +@@ -1493,7 +1499,7 @@ static inline int security_socket_accept | |
223 | 223 | static inline int security_socket_sendmsg(struct socket *sock, |
224 | 224 | struct msghdr *msg, int size) |
225 | 225 | { |
@@ -228,7 +228,7 @@ | ||
228 | 228 | } |
229 | 229 | |
230 | 230 | static inline int security_socket_recvmsg(struct socket *sock, |
231 | -@@ -1782,42 +1788,42 @@ int security_path_chroot(const struct pa | |
231 | +@@ -1784,42 +1790,42 @@ int security_path_chroot(const struct pa | |
232 | 232 | #else /* CONFIG_SECURITY_PATH */ |
233 | 233 | static inline int security_path_unlink(const struct path *dir, struct dentry *dentry) |
234 | 234 | { |
@@ -278,7 +278,7 @@ | ||
278 | 278 | } |
279 | 279 | |
280 | 280 | static inline int security_path_rename(const struct path *old_dir, |
281 | -@@ -1826,22 +1832,32 @@ static inline int security_path_rename(c | |
281 | +@@ -1828,22 +1834,32 @@ static inline int security_path_rename(c | |
282 | 282 | struct dentry *new_dentry, |
283 | 283 | unsigned int flags) |
284 | 284 | { |
@@ -315,9 +315,9 @@ | ||
315 | 315 | } |
316 | 316 | #endif /* CONFIG_SECURITY_PATH */ |
317 | 317 | |
318 | ---- linux-5.15.41.orig/include/net/ip.h | |
319 | -+++ linux-5.15.41/include/net/ip.h | |
320 | -@@ -339,6 +339,8 @@ void inet_get_local_port_range(struct ne | |
318 | +--- linux-5.15.48.orig/include/net/ip.h | |
319 | ++++ linux-5.15.48/include/net/ip.h | |
320 | +@@ -340,6 +340,8 @@ void inet_get_local_port_range(struct ne | |
321 | 321 | #ifdef CONFIG_SYSCTL |
322 | 322 | static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port) |
323 | 323 | { |
@@ -326,7 +326,7 @@ | ||
326 | 326 | if (!net->ipv4.sysctl_local_reserved_ports) |
327 | 327 | return false; |
328 | 328 | return test_bit(port, net->ipv4.sysctl_local_reserved_ports); |
329 | -@@ -357,6 +359,8 @@ static inline bool inet_port_requires_bi | |
329 | +@@ -358,6 +360,8 @@ static inline bool inet_port_requires_bi | |
330 | 330 | #else |
331 | 331 | static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port) |
332 | 332 | { |
@@ -335,8 +335,8 @@ | ||
335 | 335 | return false; |
336 | 336 | } |
337 | 337 | |
338 | ---- linux-5.15.41.orig/init/init_task.c | |
339 | -+++ linux-5.15.41/init/init_task.c | |
338 | +--- linux-5.15.48.orig/init/init_task.c | |
339 | ++++ linux-5.15.48/init/init_task.c | |
340 | 340 | @@ -214,6 +214,10 @@ struct task_struct init_task |
341 | 341 | #ifdef CONFIG_SECCOMP_FILTER |
342 | 342 | .seccomp = { .filter_count = ATOMIC_INIT(0) }, |
@@ -348,8 +348,8 @@ | ||
348 | 348 | }; |
349 | 349 | EXPORT_SYMBOL(init_task); |
350 | 350 | |
351 | ---- linux-5.15.41.orig/kernel/kexec.c | |
352 | -+++ linux-5.15.41/kernel/kexec.c | |
351 | +--- linux-5.15.48.orig/kernel/kexec.c | |
352 | ++++ linux-5.15.48/kernel/kexec.c | |
353 | 353 | @@ -16,7 +16,7 @@ |
354 | 354 | #include <linux/syscalls.h> |
355 | 355 | #include <linux/vmalloc.h> |
@@ -368,8 +368,8 @@ | ||
368 | 368 | |
369 | 369 | /* Permit LSMs and IMA to fail the kexec */ |
370 | 370 | result = security_kernel_load_data(LOADING_KEXEC_IMAGE, false); |
371 | ---- linux-5.15.41.orig/kernel/module.c | |
372 | -+++ linux-5.15.41/kernel/module.c | |
371 | +--- linux-5.15.48.orig/kernel/module.c | |
372 | ++++ linux-5.15.48/kernel/module.c | |
373 | 373 | @@ -59,6 +59,7 @@ |
374 | 374 | #include <linux/audit.h> |
375 | 375 | #include <uapi/linux/module.h> |
@@ -396,9 +396,9 @@ | ||
396 | 396 | |
397 | 397 | return 0; |
398 | 398 | } |
399 | ---- linux-5.15.41.orig/kernel/ptrace.c | |
400 | -+++ linux-5.15.41/kernel/ptrace.c | |
401 | -@@ -1296,6 +1296,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
399 | +--- linux-5.15.48.orig/kernel/ptrace.c | |
400 | ++++ linux-5.15.48/kernel/ptrace.c | |
401 | +@@ -1295,6 +1295,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
402 | 402 | { |
403 | 403 | struct task_struct *child; |
404 | 404 | long ret; |
@@ -410,7 +410,7 @@ | ||
410 | 410 | |
411 | 411 | if (request == PTRACE_TRACEME) { |
412 | 412 | ret = ptrace_traceme(); |
413 | -@@ -1443,6 +1448,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
413 | +@@ -1442,6 +1447,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
414 | 414 | { |
415 | 415 | struct task_struct *child; |
416 | 416 | long ret; |
@@ -422,8 +422,8 @@ | ||
422 | 422 | |
423 | 423 | if (request == PTRACE_TRACEME) { |
424 | 424 | ret = ptrace_traceme(); |
425 | ---- linux-5.15.41.orig/kernel/reboot.c | |
426 | -+++ linux-5.15.41/kernel/reboot.c | |
425 | +--- linux-5.15.48.orig/kernel/reboot.c | |
426 | ++++ linux-5.15.48/kernel/reboot.c | |
427 | 427 | @@ -18,6 +18,7 @@ |
428 | 428 | #include <linux/syscalls.h> |
429 | 429 | #include <linux/syscore_ops.h> |
@@ -441,8 +441,8 @@ | ||
441 | 441 | |
442 | 442 | /* |
443 | 443 | * If pid namespaces are enabled and the current task is in a child |
444 | ---- linux-5.15.41.orig/kernel/sched/core.c | |
445 | -+++ linux-5.15.41/kernel/sched/core.c | |
444 | +--- linux-5.15.48.orig/kernel/sched/core.c | |
445 | ++++ linux-5.15.48/kernel/sched/core.c | |
446 | 446 | @@ -6958,6 +6958,8 @@ int can_nice(const struct task_struct *p |
447 | 447 | SYSCALL_DEFINE1(nice, int, increment) |
448 | 448 | { |
@@ -452,9 +452,9 @@ | ||
452 | 452 | |
453 | 453 | /* |
454 | 454 | * Setpriority might change our priority at the same moment. |
455 | ---- linux-5.15.41.orig/kernel/signal.c | |
456 | -+++ linux-5.15.41/kernel/signal.c | |
457 | -@@ -3787,6 +3787,8 @@ static inline void prepare_kill_siginfo( | |
455 | +--- linux-5.15.48.orig/kernel/signal.c | |
456 | ++++ linux-5.15.48/kernel/signal.c | |
457 | +@@ -3800,6 +3800,8 @@ static inline void prepare_kill_siginfo( | |
458 | 458 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
459 | 459 | { |
460 | 460 | struct kernel_siginfo info; |
@@ -463,7 +463,7 @@ | ||
463 | 463 | |
464 | 464 | prepare_kill_siginfo(sig, &info); |
465 | 465 | |
466 | -@@ -3886,6 +3888,21 @@ SYSCALL_DEFINE4(pidfd_send_signal, int, | |
466 | +@@ -3899,6 +3901,21 @@ SYSCALL_DEFINE4(pidfd_send_signal, int, | |
467 | 467 | if (!access_pidfd_pidns(pid)) |
468 | 468 | goto err; |
469 | 469 |
@@ -485,7 +485,7 @@ | ||
485 | 485 | if (info) { |
486 | 486 | ret = copy_siginfo_from_user_any(&kinfo, info); |
487 | 487 | if (unlikely(ret)) |
488 | -@@ -3970,6 +3987,8 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid | |
488 | +@@ -3983,6 +4000,8 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid | |
489 | 489 | /* This is only valid for single tasks */ |
490 | 490 | if (pid <= 0 || tgid <= 0) |
491 | 491 | return -EINVAL; |
@@ -494,7 +494,7 @@ | ||
494 | 494 | |
495 | 495 | return do_tkill(tgid, pid, sig); |
496 | 496 | } |
497 | -@@ -3986,6 +4005,8 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, | |
497 | +@@ -3999,6 +4018,8 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, | |
498 | 498 | /* This is only valid for single tasks */ |
499 | 499 | if (pid <= 0) |
500 | 500 | return -EINVAL; |
@@ -503,7 +503,7 @@ | ||
503 | 503 | |
504 | 504 | return do_tkill(0, pid, sig); |
505 | 505 | } |
506 | -@@ -3998,6 +4019,8 @@ static int do_rt_sigqueueinfo(pid_t pid, | |
506 | +@@ -4011,6 +4032,8 @@ static int do_rt_sigqueueinfo(pid_t pid, | |
507 | 507 | if ((info->si_code >= 0 || info->si_code == SI_TKILL) && |
508 | 508 | (task_pid_vnr(current) != pid)) |
509 | 509 | return -EPERM; |
@@ -512,7 +512,7 @@ | ||
512 | 512 | |
513 | 513 | /* POSIX.1b doesn't mention process groups. */ |
514 | 514 | return kill_proc_info(sig, info, pid); |
515 | -@@ -4045,6 +4068,8 @@ static int do_rt_tgsigqueueinfo(pid_t tg | |
515 | +@@ -4058,6 +4081,8 @@ static int do_rt_tgsigqueueinfo(pid_t tg | |
516 | 516 | if ((info->si_code >= 0 || info->si_code == SI_TKILL) && |
517 | 517 | (task_pid_vnr(current) != pid)) |
518 | 518 | return -EPERM; |
@@ -521,8 +521,8 @@ | ||
521 | 521 | |
522 | 522 | return do_send_specific(tgid, pid, sig, info); |
523 | 523 | } |
524 | ---- linux-5.15.41.orig/kernel/sys.c | |
525 | -+++ linux-5.15.41/kernel/sys.c | |
524 | +--- linux-5.15.48.orig/kernel/sys.c | |
525 | ++++ linux-5.15.48/kernel/sys.c | |
526 | 526 | @@ -211,6 +211,10 @@ SYSCALL_DEFINE3(setpriority, int, which, |
527 | 527 | |
528 | 528 | if (which > PRIO_USER || which < PRIO_PROCESS) |
@@ -552,9 +552,9 @@ | ||
552 | 552 | |
553 | 553 | errno = -EFAULT; |
554 | 554 | if (!copy_from_user(tmp, name, len)) { |
555 | ---- linux-5.15.41.orig/kernel/time/timekeeping.c | |
556 | -+++ linux-5.15.41/kernel/time/timekeeping.c | |
557 | -@@ -22,6 +22,7 @@ | |
555 | +--- linux-5.15.48.orig/kernel/time/timekeeping.c | |
556 | ++++ linux-5.15.48/kernel/time/timekeeping.c | |
557 | +@@ -23,6 +23,7 @@ | |
558 | 558 | #include <linux/pvclock_gtod.h> |
559 | 559 | #include <linux/compiler.h> |
560 | 560 | #include <linux/audit.h> |
@@ -562,7 +562,7 @@ | ||
562 | 562 | |
563 | 563 | #include "tick-internal.h" |
564 | 564 | #include "ntp_internal.h" |
565 | -@@ -2327,10 +2328,15 @@ static int timekeeping_validate_timex(co | |
565 | +@@ -2328,10 +2329,15 @@ static int timekeeping_validate_timex(co | |
566 | 566 | if (!(txc->modes & ADJ_OFFSET_READONLY) && |
567 | 567 | !capable(CAP_SYS_TIME)) |
568 | 568 | return -EPERM; |
@@ -578,7 +578,7 @@ | ||
578 | 578 | /* |
579 | 579 | * if the quartz is off by more than 10% then |
580 | 580 | * something is VERY wrong! |
581 | -@@ -2345,6 +2351,8 @@ static int timekeeping_validate_timex(co | |
581 | +@@ -2346,6 +2352,8 @@ static int timekeeping_validate_timex(co | |
582 | 582 | /* In order to inject time, you gotta be super-user! */ |
583 | 583 | if (!capable(CAP_SYS_TIME)) |
584 | 584 | return -EPERM; |
@@ -587,8 +587,8 @@ | ||
587 | 587 | |
588 | 588 | /* |
589 | 589 | * Validate if a timespec/timeval used to inject a time |
590 | ---- linux-5.15.41.orig/net/ipv4/raw.c | |
591 | -+++ linux-5.15.41/net/ipv4/raw.c | |
590 | +--- linux-5.15.48.orig/net/ipv4/raw.c | |
591 | ++++ linux-5.15.48/net/ipv4/raw.c | |
592 | 592 | @@ -771,6 +771,10 @@ static int raw_recvmsg(struct sock *sk, |
593 | 593 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
594 | 594 | if (!skb) |
@@ -600,8 +600,8 @@ | ||
600 | 600 | |
601 | 601 | copied = skb->len; |
602 | 602 | if (len < copied) { |
603 | ---- linux-5.15.41.orig/net/ipv4/udp.c | |
604 | -+++ linux-5.15.41/net/ipv4/udp.c | |
603 | +--- linux-5.15.48.orig/net/ipv4/udp.c | |
604 | ++++ linux-5.15.48/net/ipv4/udp.c | |
605 | 605 | @@ -1862,6 +1862,8 @@ try_again: |
606 | 606 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
607 | 607 | if (!skb) |
@@ -611,8 +611,8 @@ | ||
611 | 611 | |
612 | 612 | ulen = udp_skb_len(skb); |
613 | 613 | copied = len; |
614 | ---- linux-5.15.41.orig/net/ipv6/raw.c | |
615 | -+++ linux-5.15.41/net/ipv6/raw.c | |
614 | +--- linux-5.15.48.orig/net/ipv6/raw.c | |
615 | ++++ linux-5.15.48/net/ipv6/raw.c | |
616 | 616 | @@ -480,6 +480,10 @@ static int rawv6_recvmsg(struct sock *sk |
617 | 617 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
618 | 618 | if (!skb) |
@@ -624,8 +624,8 @@ | ||
624 | 624 | |
625 | 625 | copied = skb->len; |
626 | 626 | if (copied > len) { |
627 | ---- linux-5.15.41.orig/net/ipv6/udp.c | |
628 | -+++ linux-5.15.41/net/ipv6/udp.c | |
627 | +--- linux-5.15.48.orig/net/ipv6/udp.c | |
628 | ++++ linux-5.15.48/net/ipv6/udp.c | |
629 | 629 | @@ -344,6 +344,8 @@ try_again: |
630 | 630 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
631 | 631 | if (!skb) |
@@ -635,8 +635,8 @@ | ||
635 | 635 | |
636 | 636 | ulen = udp6_skb_len(skb); |
637 | 637 | copied = len; |
638 | ---- linux-5.15.41.orig/net/socket.c | |
639 | -+++ linux-5.15.41/net/socket.c | |
638 | +--- linux-5.15.48.orig/net/socket.c | |
639 | ++++ linux-5.15.48/net/socket.c | |
640 | 640 | @@ -1778,6 +1778,10 @@ struct file *do_accept(struct file *file |
641 | 641 | if (err < 0) |
642 | 642 | goto out_fd; |
@@ -648,8 +648,8 @@ | ||
648 | 648 | if (upeer_sockaddr) { |
649 | 649 | len = newsock->ops->getname(newsock, |
650 | 650 | (struct sockaddr *)&address, 2); |
651 | ---- linux-5.15.41.orig/net/unix/af_unix.c | |
652 | -+++ linux-5.15.41/net/unix/af_unix.c | |
651 | +--- linux-5.15.48.orig/net/unix/af_unix.c | |
652 | ++++ linux-5.15.48/net/unix/af_unix.c | |
653 | 653 | @@ -2331,6 +2331,10 @@ int __unix_dgram_recvmsg(struct sock *sk |
654 | 654 | EPOLLOUT | EPOLLWRNORM | |
655 | 655 | EPOLLWRBAND); |
@@ -669,8 +669,8 @@ | ||
669 | 669 | mutex_unlock(&u->iolock); |
670 | 670 | out: |
671 | 671 | return err; |
672 | ---- linux-5.15.41.orig/security/Kconfig | |
673 | -+++ linux-5.15.41/security/Kconfig | |
672 | +--- linux-5.15.48.orig/security/Kconfig | |
673 | ++++ linux-5.15.48/security/Kconfig | |
674 | 674 | @@ -295,5 +295,7 @@ config LSM |
675 | 675 | |
676 | 676 | source "security/Kconfig.hardening" |
@@ -679,8 +679,8 @@ | ||
679 | 679 | + |
680 | 680 | endmenu |
681 | 681 | |
682 | ---- linux-5.15.41.orig/security/Makefile | |
683 | -+++ linux-5.15.41/security/Makefile | |
682 | +--- linux-5.15.48.orig/security/Makefile | |
683 | ++++ linux-5.15.48/security/Makefile | |
684 | 684 | @@ -27,3 +27,6 @@ obj-$(CONFIG_SECURITY_LANDLOCK) += land |
685 | 685 | |
686 | 686 | # Object integrity file lists |
@@ -688,9 +688,9 @@ | ||
688 | 688 | + |
689 | 689 | +subdir-$(CONFIG_CCSECURITY) += ccsecurity |
690 | 690 | +obj-$(CONFIG_CCSECURITY) += ccsecurity/ |
691 | ---- linux-5.15.41.orig/security/security.c | |
692 | -+++ linux-5.15.41/security/security.c | |
693 | -@@ -1657,7 +1657,9 @@ int security_task_alloc(struct task_stru | |
691 | +--- linux-5.15.48.orig/security/security.c | |
692 | ++++ linux-5.15.48/security/security.c | |
693 | +@@ -1659,7 +1659,9 @@ int security_task_alloc(struct task_stru | |
694 | 694 | |
695 | 695 | if (rc) |
696 | 696 | return rc; |
@@ -701,7 +701,7 @@ | ||
701 | 701 | if (unlikely(rc)) |
702 | 702 | security_task_free(task); |
703 | 703 | return rc; |
704 | -@@ -1666,6 +1668,7 @@ int security_task_alloc(struct task_stru | |
704 | +@@ -1668,6 +1670,7 @@ int security_task_alloc(struct task_stru | |
705 | 705 | void security_task_free(struct task_struct *task) |
706 | 706 | { |
707 | 707 | call_void_hook(task_free, task); |
@@ -1,6 +1,6 @@ | ||
1 | -This is TOMOYO Linux patch for kernel 5.17.9. | |
1 | +This is TOMOYO Linux patch for kernel 5.17.15. | |
2 | 2 | |
3 | -Source code for this patch is https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.17.9.tar.xz | |
3 | +Source code for this patch is https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.17.15.tar.xz | |
4 | 4 | --- |
5 | 5 | fs/exec.c | 2 - |
6 | 6 | fs/open.c | 2 + |
@@ -28,9 +28,9 @@ | ||
28 | 28 | security/security.c | 5 ++- |
29 | 29 | 24 files changed, 160 insertions(+), 30 deletions(-) |
30 | 30 | |
31 | ---- linux-5.17.9.orig/fs/exec.c | |
32 | -+++ linux-5.17.9/fs/exec.c | |
33 | -@@ -1840,7 +1840,7 @@ static int bprm_execve(struct linux_binp | |
31 | +--- linux-5.17.15.orig/fs/exec.c | |
32 | ++++ linux-5.17.15/fs/exec.c | |
33 | +@@ -1838,7 +1838,7 @@ static int bprm_execve(struct linux_binp | |
34 | 34 | if (retval) |
35 | 35 | goto out; |
36 | 36 |
@@ -39,8 +39,8 @@ | ||
39 | 39 | if (retval < 0) |
40 | 40 | goto out; |
41 | 41 | |
42 | ---- linux-5.17.9.orig/fs/open.c | |
43 | -+++ linux-5.17.9/fs/open.c | |
42 | +--- linux-5.17.15.orig/fs/open.c | |
43 | ++++ linux-5.17.15/fs/open.c | |
44 | 44 | @@ -1375,6 +1375,8 @@ SYSCALL_DEFINE3(close_range, unsigned in |
45 | 45 | */ |
46 | 46 | SYSCALL_DEFINE0(vhangup) |
@@ -50,8 +50,8 @@ | ||
50 | 50 | if (capable(CAP_SYS_TTY_CONFIG)) { |
51 | 51 | tty_vhangup_self(); |
52 | 52 | return 0; |
53 | ---- linux-5.17.9.orig/fs/proc/version.c | |
54 | -+++ linux-5.17.9/fs/proc/version.c | |
53 | +--- linux-5.17.15.orig/fs/proc/version.c | |
54 | ++++ linux-5.17.15/fs/proc/version.c | |
55 | 55 | @@ -21,3 +21,10 @@ static int __init proc_version_init(void |
56 | 56 | return 0; |
57 | 57 | } |
@@ -59,12 +59,12 @@ | ||
59 | 59 | + |
60 | 60 | +static int __init ccs_show_version(void) |
61 | 61 | +{ |
62 | -+ printk(KERN_INFO "Hook version: 5.17.9 2022/05/23\n"); | |
62 | ++ printk(KERN_INFO "Hook version: 5.17.15 2022/06/17\n"); | |
63 | 63 | + return 0; |
64 | 64 | +} |
65 | 65 | +fs_initcall(ccs_show_version); |
66 | ---- linux-5.17.9.orig/include/linux/sched.h | |
67 | -+++ linux-5.17.9/include/linux/sched.h | |
66 | +--- linux-5.17.15.orig/include/linux/sched.h | |
67 | ++++ linux-5.17.15/include/linux/sched.h | |
68 | 68 | @@ -44,6 +44,7 @@ struct blk_plug; |
69 | 69 | struct bpf_local_storage; |
70 | 70 | struct bpf_run_ctx; |
@@ -84,8 +84,8 @@ | ||
84 | 84 | |
85 | 85 | #ifdef CONFIG_TRACING |
86 | 86 | /* State flags for use by tracers: */ |
87 | ---- linux-5.17.9.orig/include/linux/security.h | |
88 | -+++ linux-5.17.9/include/linux/security.h | |
87 | +--- linux-5.17.15.orig/include/linux/security.h | |
88 | ++++ linux-5.17.15/include/linux/security.h | |
89 | 89 | @@ -59,6 +59,7 @@ struct fs_parameter; |
90 | 90 | enum fs_value_type; |
91 | 91 | struct watch; |
@@ -94,7 +94,7 @@ | ||
94 | 94 | |
95 | 95 | /* Default (no) options for the capable function */ |
96 | 96 | #define CAP_OPT_NONE 0x0 |
97 | -@@ -586,7 +587,10 @@ static inline int security_syslog(int ty | |
97 | +@@ -588,7 +589,10 @@ static inline int security_syslog(int ty | |
98 | 98 | static inline int security_settime64(const struct timespec64 *ts, |
99 | 99 | const struct timezone *tz) |
100 | 100 | { |
@@ -106,7 +106,7 @@ | ||
106 | 106 | } |
107 | 107 | |
108 | 108 | static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages) |
109 | -@@ -679,18 +683,18 @@ static inline int security_sb_mount(cons | |
109 | +@@ -681,18 +685,18 @@ static inline int security_sb_mount(cons | |
110 | 110 | const char *type, unsigned long flags, |
111 | 111 | void *data) |
112 | 112 | { |
@@ -128,7 +128,7 @@ | ||
128 | 128 | } |
129 | 129 | |
130 | 130 | static inline int security_sb_set_mnt_opts(struct super_block *sb, |
131 | -@@ -712,7 +716,7 @@ static inline int security_sb_clone_mnt_ | |
131 | +@@ -714,7 +718,7 @@ static inline int security_sb_clone_mnt_ | |
132 | 132 | static inline int security_move_mount(const struct path *from_path, |
133 | 133 | const struct path *to_path) |
134 | 134 | { |
@@ -137,7 +137,7 @@ | ||
137 | 137 | } |
138 | 138 | |
139 | 139 | static inline int security_path_notify(const struct path *path, u64 mask, |
140 | -@@ -854,7 +858,7 @@ static inline int security_inode_setattr | |
140 | +@@ -856,7 +860,7 @@ static inline int security_inode_setattr | |
141 | 141 | |
142 | 142 | static inline int security_inode_getattr(const struct path *path) |
143 | 143 | { |
@@ -146,7 +146,7 @@ | ||
146 | 146 | } |
147 | 147 | |
148 | 148 | static inline int security_inode_setxattr(struct user_namespace *mnt_userns, |
149 | -@@ -952,7 +956,7 @@ static inline void security_file_free(st | |
149 | +@@ -954,7 +958,7 @@ static inline void security_file_free(st | |
150 | 150 | static inline int security_file_ioctl(struct file *file, unsigned int cmd, |
151 | 151 | unsigned long arg) |
152 | 152 | { |
@@ -155,7 +155,7 @@ | ||
155 | 155 | } |
156 | 156 | |
157 | 157 | static inline int security_mmap_file(struct file *file, unsigned long prot, |
158 | -@@ -981,7 +985,7 @@ static inline int security_file_lock(str | |
158 | +@@ -983,7 +987,7 @@ static inline int security_file_lock(str | |
159 | 159 | static inline int security_file_fcntl(struct file *file, unsigned int cmd, |
160 | 160 | unsigned long arg) |
161 | 161 | { |
@@ -164,7 +164,7 @@ | ||
164 | 164 | } |
165 | 165 | |
166 | 166 | static inline void security_file_set_fowner(struct file *file) |
167 | -@@ -1003,17 +1007,19 @@ static inline int security_file_receive( | |
167 | +@@ -1005,17 +1009,19 @@ static inline int security_file_receive( | |
168 | 168 | |
169 | 169 | static inline int security_file_open(struct file *file) |
170 | 170 | { |
@@ -187,7 +187,7 @@ | ||
187 | 187 | |
188 | 188 | static inline int security_cred_alloc_blank(struct cred *cred, gfp_t gfp) |
189 | 189 | { |
190 | -@@ -1442,7 +1448,7 @@ static inline int security_unix_may_send | |
190 | +@@ -1444,7 +1450,7 @@ static inline int security_unix_may_send | |
191 | 191 | static inline int security_socket_create(int family, int type, |
192 | 192 | int protocol, int kern) |
193 | 193 | { |
@@ -196,7 +196,7 @@ | ||
196 | 196 | } |
197 | 197 | |
198 | 198 | static inline int security_socket_post_create(struct socket *sock, |
199 | -@@ -1463,19 +1469,19 @@ static inline int security_socket_bind(s | |
199 | +@@ -1465,19 +1471,19 @@ static inline int security_socket_bind(s | |
200 | 200 | struct sockaddr *address, |
201 | 201 | int addrlen) |
202 | 202 | { |
@@ -219,7 +219,7 @@ | ||
219 | 219 | } |
220 | 220 | |
221 | 221 | static inline int security_socket_accept(struct socket *sock, |
222 | -@@ -1487,7 +1493,7 @@ static inline int security_socket_accept | |
222 | +@@ -1489,7 +1495,7 @@ static inline int security_socket_accept | |
223 | 223 | static inline int security_socket_sendmsg(struct socket *sock, |
224 | 224 | struct msghdr *msg, int size) |
225 | 225 | { |
@@ -228,7 +228,7 @@ | ||
228 | 228 | } |
229 | 229 | |
230 | 230 | static inline int security_socket_recvmsg(struct socket *sock, |
231 | -@@ -1784,42 +1790,42 @@ int security_path_chroot(const struct pa | |
231 | +@@ -1786,42 +1792,42 @@ int security_path_chroot(const struct pa | |
232 | 232 | #else /* CONFIG_SECURITY_PATH */ |
233 | 233 | static inline int security_path_unlink(const struct path *dir, struct dentry *dentry) |
234 | 234 | { |
@@ -278,7 +278,7 @@ | ||
278 | 278 | } |
279 | 279 | |
280 | 280 | static inline int security_path_rename(const struct path *old_dir, |
281 | -@@ -1828,22 +1834,32 @@ static inline int security_path_rename(c | |
281 | +@@ -1830,22 +1836,32 @@ static inline int security_path_rename(c | |
282 | 282 | struct dentry *new_dentry, |
283 | 283 | unsigned int flags) |
284 | 284 | { |
@@ -315,9 +315,9 @@ | ||
315 | 315 | } |
316 | 316 | #endif /* CONFIG_SECURITY_PATH */ |
317 | 317 | |
318 | ---- linux-5.17.9.orig/include/net/ip.h | |
319 | -+++ linux-5.17.9/include/net/ip.h | |
320 | -@@ -344,6 +344,8 @@ void inet_get_local_port_range(struct ne | |
318 | +--- linux-5.17.15.orig/include/net/ip.h | |
319 | ++++ linux-5.17.15/include/net/ip.h | |
320 | +@@ -345,6 +345,8 @@ void inet_get_local_port_range(struct ne | |
321 | 321 | #ifdef CONFIG_SYSCTL |
322 | 322 | static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port) |
323 | 323 | { |
@@ -326,7 +326,7 @@ | ||
326 | 326 | if (!net->ipv4.sysctl_local_reserved_ports) |
327 | 327 | return false; |
328 | 328 | return test_bit(port, net->ipv4.sysctl_local_reserved_ports); |
329 | -@@ -362,6 +364,8 @@ static inline bool inet_port_requires_bi | |
329 | +@@ -363,6 +365,8 @@ static inline bool inet_port_requires_bi | |
330 | 330 | #else |
331 | 331 | static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port) |
332 | 332 | { |
@@ -335,8 +335,8 @@ | ||
335 | 335 | return false; |
336 | 336 | } |
337 | 337 | |
338 | ---- linux-5.17.9.orig/init/init_task.c | |
339 | -+++ linux-5.17.9/init/init_task.c | |
338 | +--- linux-5.17.15.orig/init/init_task.c | |
339 | ++++ linux-5.17.15/init/init_task.c | |
340 | 340 | @@ -209,6 +209,10 @@ struct task_struct init_task |
341 | 341 | #ifdef CONFIG_SECCOMP_FILTER |
342 | 342 | .seccomp = { .filter_count = ATOMIC_INIT(0) }, |
@@ -348,8 +348,8 @@ | ||
348 | 348 | }; |
349 | 349 | EXPORT_SYMBOL(init_task); |
350 | 350 | |
351 | ---- linux-5.17.9.orig/kernel/kexec.c | |
352 | -+++ linux-5.17.9/kernel/kexec.c | |
351 | +--- linux-5.17.15.orig/kernel/kexec.c | |
352 | ++++ linux-5.17.15/kernel/kexec.c | |
353 | 353 | @@ -16,7 +16,7 @@ |
354 | 354 | #include <linux/syscalls.h> |
355 | 355 | #include <linux/vmalloc.h> |
@@ -368,8 +368,8 @@ | ||
368 | 368 | |
369 | 369 | /* Permit LSMs and IMA to fail the kexec */ |
370 | 370 | result = security_kernel_load_data(LOADING_KEXEC_IMAGE, false); |
371 | ---- linux-5.17.9.orig/kernel/module.c | |
372 | -+++ linux-5.17.9/kernel/module.c | |
371 | +--- linux-5.17.15.orig/kernel/module.c | |
372 | ++++ linux-5.17.15/kernel/module.c | |
373 | 373 | @@ -59,6 +59,7 @@ |
374 | 374 | #include <linux/audit.h> |
375 | 375 | #include <uapi/linux/module.h> |
@@ -387,7 +387,7 @@ | ||
387 | 387 | |
388 | 388 | if (strncpy_from_user(name, name_user, MODULE_NAME_LEN-1) < 0) |
389 | 389 | return -EFAULT; |
390 | -@@ -3822,6 +3825,8 @@ static int may_init_module(void) | |
390 | +@@ -3826,6 +3829,8 @@ static int may_init_module(void) | |
391 | 391 | { |
392 | 392 | if (!capable(CAP_SYS_MODULE) || modules_disabled) |
393 | 393 | return -EPERM; |
@@ -396,9 +396,9 @@ | ||
396 | 396 | |
397 | 397 | return 0; |
398 | 398 | } |
399 | ---- linux-5.17.9.orig/kernel/ptrace.c | |
400 | -+++ linux-5.17.9/kernel/ptrace.c | |
401 | -@@ -1294,6 +1294,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
399 | +--- linux-5.17.15.orig/kernel/ptrace.c | |
400 | ++++ linux-5.17.15/kernel/ptrace.c | |
401 | +@@ -1293,6 +1293,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
402 | 402 | { |
403 | 403 | struct task_struct *child; |
404 | 404 | long ret; |
@@ -410,7 +410,7 @@ | ||
410 | 410 | |
411 | 411 | if (request == PTRACE_TRACEME) { |
412 | 412 | ret = ptrace_traceme(); |
413 | -@@ -1441,6 +1446,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
413 | +@@ -1440,6 +1445,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
414 | 414 | { |
415 | 415 | struct task_struct *child; |
416 | 416 | long ret; |
@@ -422,8 +422,8 @@ | ||
422 | 422 | |
423 | 423 | if (request == PTRACE_TRACEME) { |
424 | 424 | ret = ptrace_traceme(); |
425 | ---- linux-5.17.9.orig/kernel/reboot.c | |
426 | -+++ linux-5.17.9/kernel/reboot.c | |
425 | +--- linux-5.17.15.orig/kernel/reboot.c | |
426 | ++++ linux-5.17.15/kernel/reboot.c | |
427 | 427 | @@ -18,6 +18,7 @@ |
428 | 428 | #include <linux/syscalls.h> |
429 | 429 | #include <linux/syscore_ops.h> |
@@ -441,8 +441,8 @@ | ||
441 | 441 | |
442 | 442 | /* |
443 | 443 | * If pid namespaces are enabled and the current task is in a child |
444 | ---- linux-5.17.9.orig/kernel/sched/core.c | |
445 | -+++ linux-5.17.9/kernel/sched/core.c | |
444 | +--- linux-5.17.15.orig/kernel/sched/core.c | |
445 | ++++ linux-5.17.15/kernel/sched/core.c | |
446 | 446 | @@ -6983,6 +6983,8 @@ int can_nice(const struct task_struct *p |
447 | 447 | SYSCALL_DEFINE1(nice, int, increment) |
448 | 448 | { |
@@ -452,9 +452,9 @@ | ||
452 | 452 | |
453 | 453 | /* |
454 | 454 | * Setpriority might change our priority at the same moment. |
455 | ---- linux-5.17.9.orig/kernel/signal.c | |
456 | -+++ linux-5.17.9/kernel/signal.c | |
457 | -@@ -3773,6 +3773,8 @@ static inline void prepare_kill_siginfo( | |
455 | +--- linux-5.17.15.orig/kernel/signal.c | |
456 | ++++ linux-5.17.15/kernel/signal.c | |
457 | +@@ -3786,6 +3786,8 @@ static inline void prepare_kill_siginfo( | |
458 | 458 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
459 | 459 | { |
460 | 460 | struct kernel_siginfo info; |
@@ -463,7 +463,7 @@ | ||
463 | 463 | |
464 | 464 | prepare_kill_siginfo(sig, &info); |
465 | 465 | |
466 | -@@ -3872,6 +3874,21 @@ SYSCALL_DEFINE4(pidfd_send_signal, int, | |
466 | +@@ -3885,6 +3887,21 @@ SYSCALL_DEFINE4(pidfd_send_signal, int, | |
467 | 467 | if (!access_pidfd_pidns(pid)) |
468 | 468 | goto err; |
469 | 469 |
@@ -485,7 +485,7 @@ | ||
485 | 485 | if (info) { |
486 | 486 | ret = copy_siginfo_from_user_any(&kinfo, info); |
487 | 487 | if (unlikely(ret)) |
488 | -@@ -3956,6 +3973,8 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid | |
488 | +@@ -3969,6 +3986,8 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid | |
489 | 489 | /* This is only valid for single tasks */ |
490 | 490 | if (pid <= 0 || tgid <= 0) |
491 | 491 | return -EINVAL; |
@@ -494,7 +494,7 @@ | ||
494 | 494 | |
495 | 495 | return do_tkill(tgid, pid, sig); |
496 | 496 | } |
497 | -@@ -3972,6 +3991,8 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, | |
497 | +@@ -3985,6 +4004,8 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, | |
498 | 498 | /* This is only valid for single tasks */ |
499 | 499 | if (pid <= 0) |
500 | 500 | return -EINVAL; |
@@ -503,7 +503,7 @@ | ||
503 | 503 | |
504 | 504 | return do_tkill(0, pid, sig); |
505 | 505 | } |
506 | -@@ -3984,6 +4005,8 @@ static int do_rt_sigqueueinfo(pid_t pid, | |
506 | +@@ -3997,6 +4018,8 @@ static int do_rt_sigqueueinfo(pid_t pid, | |
507 | 507 | if ((info->si_code >= 0 || info->si_code == SI_TKILL) && |
508 | 508 | (task_pid_vnr(current) != pid)) |
509 | 509 | return -EPERM; |
@@ -512,7 +512,7 @@ | ||
512 | 512 | |
513 | 513 | /* POSIX.1b doesn't mention process groups. */ |
514 | 514 | return kill_proc_info(sig, info, pid); |
515 | -@@ -4031,6 +4054,8 @@ static int do_rt_tgsigqueueinfo(pid_t tg | |
515 | +@@ -4044,6 +4067,8 @@ static int do_rt_tgsigqueueinfo(pid_t tg | |
516 | 516 | if ((info->si_code >= 0 || info->si_code == SI_TKILL) && |
517 | 517 | (task_pid_vnr(current) != pid)) |
518 | 518 | return -EPERM; |
@@ -521,8 +521,8 @@ | ||
521 | 521 | |
522 | 522 | return do_send_specific(tgid, pid, sig, info); |
523 | 523 | } |
524 | ---- linux-5.17.9.orig/kernel/sys.c | |
525 | -+++ linux-5.17.9/kernel/sys.c | |
524 | +--- linux-5.17.15.orig/kernel/sys.c | |
525 | ++++ linux-5.17.15/kernel/sys.c | |
526 | 526 | @@ -212,6 +212,10 @@ SYSCALL_DEFINE3(setpriority, int, which, |
527 | 527 | |
528 | 528 | if (which > PRIO_USER || which < PRIO_PROCESS) |
@@ -552,9 +552,9 @@ | ||
552 | 552 | |
553 | 553 | errno = -EFAULT; |
554 | 554 | if (!copy_from_user(tmp, name, len)) { |
555 | ---- linux-5.17.9.orig/kernel/time/timekeeping.c | |
556 | -+++ linux-5.17.9/kernel/time/timekeeping.c | |
557 | -@@ -22,6 +22,7 @@ | |
555 | +--- linux-5.17.15.orig/kernel/time/timekeeping.c | |
556 | ++++ linux-5.17.15/kernel/time/timekeeping.c | |
557 | +@@ -23,6 +23,7 @@ | |
558 | 558 | #include <linux/pvclock_gtod.h> |
559 | 559 | #include <linux/compiler.h> |
560 | 560 | #include <linux/audit.h> |
@@ -562,7 +562,7 @@ | ||
562 | 562 | |
563 | 563 | #include "tick-internal.h" |
564 | 564 | #include "ntp_internal.h" |
565 | -@@ -2327,10 +2328,15 @@ static int timekeeping_validate_timex(co | |
565 | +@@ -2328,10 +2329,15 @@ static int timekeeping_validate_timex(co | |
566 | 566 | if (!(txc->modes & ADJ_OFFSET_READONLY) && |
567 | 567 | !capable(CAP_SYS_TIME)) |
568 | 568 | return -EPERM; |
@@ -578,7 +578,7 @@ | ||
578 | 578 | /* |
579 | 579 | * if the quartz is off by more than 10% then |
580 | 580 | * something is VERY wrong! |
581 | -@@ -2345,6 +2351,8 @@ static int timekeeping_validate_timex(co | |
581 | +@@ -2346,6 +2352,8 @@ static int timekeeping_validate_timex(co | |
582 | 582 | /* In order to inject time, you gotta be super-user! */ |
583 | 583 | if (!capable(CAP_SYS_TIME)) |
584 | 584 | return -EPERM; |
@@ -587,8 +587,8 @@ | ||
587 | 587 | |
588 | 588 | /* |
589 | 589 | * Validate if a timespec/timeval used to inject a time |
590 | ---- linux-5.17.9.orig/net/ipv4/raw.c | |
591 | -+++ linux-5.17.9/net/ipv4/raw.c | |
590 | +--- linux-5.17.15.orig/net/ipv4/raw.c | |
591 | ++++ linux-5.17.15/net/ipv4/raw.c | |
592 | 592 | @@ -772,6 +772,10 @@ static int raw_recvmsg(struct sock *sk, |
593 | 593 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
594 | 594 | if (!skb) |
@@ -600,8 +600,8 @@ | ||
600 | 600 | |
601 | 601 | copied = skb->len; |
602 | 602 | if (len < copied) { |
603 | ---- linux-5.17.9.orig/net/ipv4/udp.c | |
604 | -+++ linux-5.17.9/net/ipv4/udp.c | |
603 | +--- linux-5.17.15.orig/net/ipv4/udp.c | |
604 | ++++ linux-5.17.15/net/ipv4/udp.c | |
605 | 605 | @@ -1862,6 +1862,8 @@ try_again: |
606 | 606 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
607 | 607 | if (!skb) |
@@ -611,8 +611,8 @@ | ||
611 | 611 | |
612 | 612 | ulen = udp_skb_len(skb); |
613 | 613 | copied = len; |
614 | ---- linux-5.17.9.orig/net/ipv6/raw.c | |
615 | -+++ linux-5.17.9/net/ipv6/raw.c | |
614 | +--- linux-5.17.15.orig/net/ipv6/raw.c | |
615 | ++++ linux-5.17.15/net/ipv6/raw.c | |
616 | 616 | @@ -480,6 +480,10 @@ static int rawv6_recvmsg(struct sock *sk |
617 | 617 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
618 | 618 | if (!skb) |
@@ -624,8 +624,8 @@ | ||
624 | 624 | |
625 | 625 | copied = skb->len; |
626 | 626 | if (copied > len) { |
627 | ---- linux-5.17.9.orig/net/ipv6/udp.c | |
628 | -+++ linux-5.17.9/net/ipv6/udp.c | |
627 | +--- linux-5.17.15.orig/net/ipv6/udp.c | |
628 | ++++ linux-5.17.15/net/ipv6/udp.c | |
629 | 629 | @@ -345,6 +345,8 @@ try_again: |
630 | 630 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
631 | 631 | if (!skb) |
@@ -635,8 +635,8 @@ | ||
635 | 635 | |
636 | 636 | ulen = udp6_skb_len(skb); |
637 | 637 | copied = len; |
638 | ---- linux-5.17.9.orig/net/socket.c | |
639 | -+++ linux-5.17.9/net/socket.c | |
638 | +--- linux-5.17.15.orig/net/socket.c | |
639 | ++++ linux-5.17.15/net/socket.c | |
640 | 640 | @@ -1779,6 +1779,10 @@ struct file *do_accept(struct file *file |
641 | 641 | if (err < 0) |
642 | 642 | goto out_fd; |
@@ -648,8 +648,8 @@ | ||
648 | 648 | if (upeer_sockaddr) { |
649 | 649 | len = newsock->ops->getname(newsock, |
650 | 650 | (struct sockaddr *)&address, 2); |
651 | ---- linux-5.17.9.orig/net/unix/af_unix.c | |
652 | -+++ linux-5.17.9/net/unix/af_unix.c | |
651 | +--- linux-5.17.15.orig/net/unix/af_unix.c | |
652 | ++++ linux-5.17.15/net/unix/af_unix.c | |
653 | 653 | @@ -2419,6 +2419,10 @@ int __unix_dgram_recvmsg(struct sock *sk |
654 | 654 | EPOLLOUT | EPOLLWRNORM | |
655 | 655 | EPOLLWRBAND); |
@@ -669,8 +669,8 @@ | ||
669 | 669 | mutex_unlock(&u->iolock); |
670 | 670 | out: |
671 | 671 | return err; |
672 | ---- linux-5.17.9.orig/security/Kconfig | |
673 | -+++ linux-5.17.9/security/Kconfig | |
672 | +--- linux-5.17.15.orig/security/Kconfig | |
673 | ++++ linux-5.17.15/security/Kconfig | |
674 | 674 | @@ -281,5 +281,7 @@ config LSM |
675 | 675 | |
676 | 676 | source "security/Kconfig.hardening" |
@@ -679,8 +679,8 @@ | ||
679 | 679 | + |
680 | 680 | endmenu |
681 | 681 | |
682 | ---- linux-5.17.9.orig/security/Makefile | |
683 | -+++ linux-5.17.9/security/Makefile | |
682 | +--- linux-5.17.15.orig/security/Makefile | |
683 | ++++ linux-5.17.15/security/Makefile | |
684 | 684 | @@ -27,3 +27,6 @@ obj-$(CONFIG_SECURITY_LANDLOCK) += land |
685 | 685 | |
686 | 686 | # Object integrity file lists |
@@ -688,9 +688,9 @@ | ||
688 | 688 | + |
689 | 689 | +subdir-$(CONFIG_CCSECURITY) += ccsecurity |
690 | 690 | +obj-$(CONFIG_CCSECURITY) += ccsecurity/ |
691 | ---- linux-5.17.9.orig/security/security.c | |
692 | -+++ linux-5.17.9/security/security.c | |
693 | -@@ -1661,7 +1661,9 @@ int security_task_alloc(struct task_stru | |
691 | +--- linux-5.17.15.orig/security/security.c | |
692 | ++++ linux-5.17.15/security/security.c | |
693 | +@@ -1663,7 +1663,9 @@ int security_task_alloc(struct task_stru | |
694 | 694 | |
695 | 695 | if (rc) |
696 | 696 | return rc; |
@@ -701,7 +701,7 @@ | ||
701 | 701 | if (unlikely(rc)) |
702 | 702 | security_task_free(task); |
703 | 703 | return rc; |
704 | -@@ -1670,6 +1672,7 @@ int security_task_alloc(struct task_stru | |
704 | +@@ -1672,6 +1674,7 @@ int security_task_alloc(struct task_stru | |
705 | 705 | void security_task_free(struct task_struct *task) |
706 | 706 | { |
707 | 707 | call_void_hook(task_free, task); |
@@ -1,6 +1,6 @@ | ||
1 | -This is TOMOYO Linux patch for kernel 5.18. | |
1 | +This is TOMOYO Linux patch for kernel 5.18.5. | |
2 | 2 | |
3 | -Source code for this patch is https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.18.tar.xz | |
3 | +Source code for this patch is https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.18.5.tar.xz | |
4 | 4 | --- |
5 | 5 | fs/exec.c | 2 - |
6 | 6 | fs/open.c | 2 + |
@@ -28,9 +28,9 @@ | ||
28 | 28 | security/security.c | 5 ++- |
29 | 29 | 24 files changed, 160 insertions(+), 30 deletions(-) |
30 | 30 | |
31 | ---- linux-5.18.orig/fs/exec.c | |
32 | -+++ linux-5.18/fs/exec.c | |
33 | -@@ -1833,7 +1833,7 @@ static int bprm_execve(struct linux_binp | |
31 | +--- linux-5.18.5.orig/fs/exec.c | |
32 | ++++ linux-5.18.5/fs/exec.c | |
33 | +@@ -1831,7 +1831,7 @@ static int bprm_execve(struct linux_binp | |
34 | 34 | if (retval) |
35 | 35 | goto out; |
36 | 36 |
@@ -39,8 +39,8 @@ | ||
39 | 39 | if (retval < 0) |
40 | 40 | goto out; |
41 | 41 | |
42 | ---- linux-5.18.orig/fs/open.c | |
43 | -+++ linux-5.18/fs/open.c | |
42 | +--- linux-5.18.5.orig/fs/open.c | |
43 | ++++ linux-5.18.5/fs/open.c | |
44 | 44 | @@ -1374,6 +1374,8 @@ SYSCALL_DEFINE3(close_range, unsigned in |
45 | 45 | */ |
46 | 46 | SYSCALL_DEFINE0(vhangup) |
@@ -50,8 +50,8 @@ | ||
50 | 50 | if (capable(CAP_SYS_TTY_CONFIG)) { |
51 | 51 | tty_vhangup_self(); |
52 | 52 | return 0; |
53 | ---- linux-5.18.orig/fs/proc/version.c | |
54 | -+++ linux-5.18/fs/proc/version.c | |
53 | +--- linux-5.18.5.orig/fs/proc/version.c | |
54 | ++++ linux-5.18.5/fs/proc/version.c | |
55 | 55 | @@ -21,3 +21,10 @@ static int __init proc_version_init(void |
56 | 56 | return 0; |
57 | 57 | } |
@@ -59,12 +59,12 @@ | ||
59 | 59 | + |
60 | 60 | +static int __init ccs_show_version(void) |
61 | 61 | +{ |
62 | -+ printk(KERN_INFO "Hook version: 5.18 2022/05/23\n"); | |
62 | ++ printk(KERN_INFO "Hook version: 5.18.5 2022/06/17\n"); | |
63 | 63 | + return 0; |
64 | 64 | +} |
65 | 65 | +fs_initcall(ccs_show_version); |
66 | ---- linux-5.18.orig/include/linux/sched.h | |
67 | -+++ linux-5.18/include/linux/sched.h | |
66 | +--- linux-5.18.5.orig/include/linux/sched.h | |
67 | ++++ linux-5.18.5/include/linux/sched.h | |
68 | 68 | @@ -44,6 +44,7 @@ struct blk_plug; |
69 | 69 | struct bpf_local_storage; |
70 | 70 | struct bpf_run_ctx; |
@@ -84,8 +84,8 @@ | ||
84 | 84 | |
85 | 85 | #ifdef CONFIG_TRACING |
86 | 86 | /* State flags for use by tracers: */ |
87 | ---- linux-5.18.orig/include/linux/security.h | |
88 | -+++ linux-5.18/include/linux/security.h | |
87 | +--- linux-5.18.5.orig/include/linux/security.h | |
88 | ++++ linux-5.18.5/include/linux/security.h | |
89 | 89 | @@ -59,6 +59,7 @@ struct fs_parameter; |
90 | 90 | enum fs_value_type; |
91 | 91 | struct watch; |
@@ -94,7 +94,7 @@ | ||
94 | 94 | |
95 | 95 | /* Default (no) options for the capable function */ |
96 | 96 | #define CAP_OPT_NONE 0x0 |
97 | -@@ -586,7 +587,10 @@ static inline int security_syslog(int ty | |
97 | +@@ -588,7 +589,10 @@ static inline int security_syslog(int ty | |
98 | 98 | static inline int security_settime64(const struct timespec64 *ts, |
99 | 99 | const struct timezone *tz) |
100 | 100 | { |
@@ -106,7 +106,7 @@ | ||
106 | 106 | } |
107 | 107 | |
108 | 108 | static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages) |
109 | -@@ -679,18 +683,18 @@ static inline int security_sb_mount(cons | |
109 | +@@ -681,18 +685,18 @@ static inline int security_sb_mount(cons | |
110 | 110 | const char *type, unsigned long flags, |
111 | 111 | void *data) |
112 | 112 | { |
@@ -128,7 +128,7 @@ | ||
128 | 128 | } |
129 | 129 | |
130 | 130 | static inline int security_sb_set_mnt_opts(struct super_block *sb, |
131 | -@@ -712,7 +716,7 @@ static inline int security_sb_clone_mnt_ | |
131 | +@@ -714,7 +718,7 @@ static inline int security_sb_clone_mnt_ | |
132 | 132 | static inline int security_move_mount(const struct path *from_path, |
133 | 133 | const struct path *to_path) |
134 | 134 | { |
@@ -137,7 +137,7 @@ | ||
137 | 137 | } |
138 | 138 | |
139 | 139 | static inline int security_path_notify(const struct path *path, u64 mask, |
140 | -@@ -854,7 +858,7 @@ static inline int security_inode_setattr | |
140 | +@@ -856,7 +860,7 @@ static inline int security_inode_setattr | |
141 | 141 | |
142 | 142 | static inline int security_inode_getattr(const struct path *path) |
143 | 143 | { |
@@ -146,7 +146,7 @@ | ||
146 | 146 | } |
147 | 147 | |
148 | 148 | static inline int security_inode_setxattr(struct user_namespace *mnt_userns, |
149 | -@@ -952,7 +956,7 @@ static inline void security_file_free(st | |
149 | +@@ -954,7 +958,7 @@ static inline void security_file_free(st | |
150 | 150 | static inline int security_file_ioctl(struct file *file, unsigned int cmd, |
151 | 151 | unsigned long arg) |
152 | 152 | { |
@@ -155,7 +155,7 @@ | ||
155 | 155 | } |
156 | 156 | |
157 | 157 | static inline int security_mmap_file(struct file *file, unsigned long prot, |
158 | -@@ -981,7 +985,7 @@ static inline int security_file_lock(str | |
158 | +@@ -983,7 +987,7 @@ static inline int security_file_lock(str | |
159 | 159 | static inline int security_file_fcntl(struct file *file, unsigned int cmd, |
160 | 160 | unsigned long arg) |
161 | 161 | { |
@@ -164,7 +164,7 @@ | ||
164 | 164 | } |
165 | 165 | |
166 | 166 | static inline void security_file_set_fowner(struct file *file) |
167 | -@@ -1003,17 +1007,19 @@ static inline int security_file_receive( | |
167 | +@@ -1005,17 +1009,19 @@ static inline int security_file_receive( | |
168 | 168 | |
169 | 169 | static inline int security_file_open(struct file *file) |
170 | 170 | { |
@@ -187,7 +187,7 @@ | ||
187 | 187 | |
188 | 188 | static inline int security_cred_alloc_blank(struct cred *cred, gfp_t gfp) |
189 | 189 | { |
190 | -@@ -1442,7 +1448,7 @@ static inline int security_unix_may_send | |
190 | +@@ -1444,7 +1450,7 @@ static inline int security_unix_may_send | |
191 | 191 | static inline int security_socket_create(int family, int type, |
192 | 192 | int protocol, int kern) |
193 | 193 | { |
@@ -196,7 +196,7 @@ | ||
196 | 196 | } |
197 | 197 | |
198 | 198 | static inline int security_socket_post_create(struct socket *sock, |
199 | -@@ -1463,19 +1469,19 @@ static inline int security_socket_bind(s | |
199 | +@@ -1465,19 +1471,19 @@ static inline int security_socket_bind(s | |
200 | 200 | struct sockaddr *address, |
201 | 201 | int addrlen) |
202 | 202 | { |
@@ -219,7 +219,7 @@ | ||
219 | 219 | } |
220 | 220 | |
221 | 221 | static inline int security_socket_accept(struct socket *sock, |
222 | -@@ -1487,7 +1493,7 @@ static inline int security_socket_accept | |
222 | +@@ -1489,7 +1495,7 @@ static inline int security_socket_accept | |
223 | 223 | static inline int security_socket_sendmsg(struct socket *sock, |
224 | 224 | struct msghdr *msg, int size) |
225 | 225 | { |
@@ -228,7 +228,7 @@ | ||
228 | 228 | } |
229 | 229 | |
230 | 230 | static inline int security_socket_recvmsg(struct socket *sock, |
231 | -@@ -1784,42 +1790,42 @@ int security_path_chroot(const struct pa | |
231 | +@@ -1786,42 +1792,42 @@ int security_path_chroot(const struct pa | |
232 | 232 | #else /* CONFIG_SECURITY_PATH */ |
233 | 233 | static inline int security_path_unlink(const struct path *dir, struct dentry *dentry) |
234 | 234 | { |
@@ -278,7 +278,7 @@ | ||
278 | 278 | } |
279 | 279 | |
280 | 280 | static inline int security_path_rename(const struct path *old_dir, |
281 | -@@ -1828,22 +1834,32 @@ static inline int security_path_rename(c | |
281 | +@@ -1830,22 +1836,32 @@ static inline int security_path_rename(c | |
282 | 282 | struct dentry *new_dentry, |
283 | 283 | unsigned int flags) |
284 | 284 | { |
@@ -315,8 +315,8 @@ | ||
315 | 315 | } |
316 | 316 | #endif /* CONFIG_SECURITY_PATH */ |
317 | 317 | |
318 | ---- linux-5.18.orig/include/net/ip.h | |
319 | -+++ linux-5.18/include/net/ip.h | |
318 | +--- linux-5.18.5.orig/include/net/ip.h | |
319 | ++++ linux-5.18.5/include/net/ip.h | |
320 | 320 | @@ -345,6 +345,8 @@ void inet_get_local_port_range(struct ne |
321 | 321 | #ifdef CONFIG_SYSCTL |
322 | 322 | static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port) |
@@ -335,8 +335,8 @@ | ||
335 | 335 | return false; |
336 | 336 | } |
337 | 337 | |
338 | ---- linux-5.18.orig/init/init_task.c | |
339 | -+++ linux-5.18/init/init_task.c | |
338 | +--- linux-5.18.5.orig/init/init_task.c | |
339 | ++++ linux-5.18.5/init/init_task.c | |
340 | 340 | @@ -209,6 +209,10 @@ struct task_struct init_task |
341 | 341 | #ifdef CONFIG_SECCOMP_FILTER |
342 | 342 | .seccomp = { .filter_count = ATOMIC_INIT(0) }, |
@@ -348,8 +348,8 @@ | ||
348 | 348 | }; |
349 | 349 | EXPORT_SYMBOL(init_task); |
350 | 350 | |
351 | ---- linux-5.18.orig/kernel/kexec.c | |
352 | -+++ linux-5.18/kernel/kexec.c | |
351 | +--- linux-5.18.5.orig/kernel/kexec.c | |
352 | ++++ linux-5.18.5/kernel/kexec.c | |
353 | 353 | @@ -16,7 +16,7 @@ |
354 | 354 | #include <linux/syscalls.h> |
355 | 355 | #include <linux/vmalloc.h> |
@@ -368,8 +368,8 @@ | ||
368 | 368 | |
369 | 369 | /* Permit LSMs and IMA to fail the kexec */ |
370 | 370 | result = security_kernel_load_data(LOADING_KEXEC_IMAGE, false); |
371 | ---- linux-5.18.orig/kernel/module.c | |
372 | -+++ linux-5.18/kernel/module.c | |
371 | +--- linux-5.18.5.orig/kernel/module.c | |
372 | ++++ linux-5.18.5/kernel/module.c | |
373 | 373 | @@ -59,6 +59,7 @@ |
374 | 374 | #include <linux/audit.h> |
375 | 375 | #include <uapi/linux/module.h> |
@@ -387,7 +387,7 @@ | ||
387 | 387 | |
388 | 388 | if (strncpy_from_user(name, name_user, MODULE_NAME_LEN-1) < 0) |
389 | 389 | return -EFAULT; |
390 | -@@ -3822,6 +3825,8 @@ static int may_init_module(void) | |
390 | +@@ -3826,6 +3829,8 @@ static int may_init_module(void) | |
391 | 391 | { |
392 | 392 | if (!capable(CAP_SYS_MODULE) || modules_disabled) |
393 | 393 | return -EPERM; |
@@ -396,9 +396,9 @@ | ||
396 | 396 | |
397 | 397 | return 0; |
398 | 398 | } |
399 | ---- linux-5.18.orig/kernel/ptrace.c | |
400 | -+++ linux-5.18/kernel/ptrace.c | |
401 | -@@ -1294,6 +1294,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
399 | +--- linux-5.18.5.orig/kernel/ptrace.c | |
400 | ++++ linux-5.18.5/kernel/ptrace.c | |
401 | +@@ -1293,6 +1293,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
402 | 402 | { |
403 | 403 | struct task_struct *child; |
404 | 404 | long ret; |
@@ -410,7 +410,7 @@ | ||
410 | 410 | |
411 | 411 | if (request == PTRACE_TRACEME) { |
412 | 412 | ret = ptrace_traceme(); |
413 | -@@ -1441,6 +1446,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
413 | +@@ -1440,6 +1445,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
414 | 414 | { |
415 | 415 | struct task_struct *child; |
416 | 416 | long ret; |
@@ -422,8 +422,8 @@ | ||
422 | 422 | |
423 | 423 | if (request == PTRACE_TRACEME) { |
424 | 424 | ret = ptrace_traceme(); |
425 | ---- linux-5.18.orig/kernel/reboot.c | |
426 | -+++ linux-5.18/kernel/reboot.c | |
425 | +--- linux-5.18.5.orig/kernel/reboot.c | |
426 | ++++ linux-5.18.5/kernel/reboot.c | |
427 | 427 | @@ -18,6 +18,7 @@ |
428 | 428 | #include <linux/syscalls.h> |
429 | 429 | #include <linux/syscore_ops.h> |
@@ -441,8 +441,8 @@ | ||
441 | 441 | |
442 | 442 | /* |
443 | 443 | * If pid namespaces are enabled and the current task is in a child |
444 | ---- linux-5.18.orig/kernel/sched/core.c | |
445 | -+++ linux-5.18/kernel/sched/core.c | |
444 | +--- linux-5.18.5.orig/kernel/sched/core.c | |
445 | ++++ linux-5.18.5/kernel/sched/core.c | |
446 | 446 | @@ -6953,6 +6953,8 @@ int can_nice(const struct task_struct *p |
447 | 447 | SYSCALL_DEFINE1(nice, int, increment) |
448 | 448 | { |
@@ -452,9 +452,9 @@ | ||
452 | 452 | |
453 | 453 | /* |
454 | 454 | * Setpriority might change our priority at the same moment. |
455 | ---- linux-5.18.orig/kernel/signal.c | |
456 | -+++ linux-5.18/kernel/signal.c | |
457 | -@@ -3775,6 +3775,8 @@ static inline void prepare_kill_siginfo( | |
455 | +--- linux-5.18.5.orig/kernel/signal.c | |
456 | ++++ linux-5.18.5/kernel/signal.c | |
457 | +@@ -3788,6 +3788,8 @@ static inline void prepare_kill_siginfo( | |
458 | 458 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
459 | 459 | { |
460 | 460 | struct kernel_siginfo info; |
@@ -463,7 +463,7 @@ | ||
463 | 463 | |
464 | 464 | prepare_kill_siginfo(sig, &info); |
465 | 465 | |
466 | -@@ -3874,6 +3876,21 @@ SYSCALL_DEFINE4(pidfd_send_signal, int, | |
466 | +@@ -3887,6 +3889,21 @@ SYSCALL_DEFINE4(pidfd_send_signal, int, | |
467 | 467 | if (!access_pidfd_pidns(pid)) |
468 | 468 | goto err; |
469 | 469 |
@@ -485,7 +485,7 @@ | ||
485 | 485 | if (info) { |
486 | 486 | ret = copy_siginfo_from_user_any(&kinfo, info); |
487 | 487 | if (unlikely(ret)) |
488 | -@@ -3958,6 +3975,8 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid | |
488 | +@@ -3971,6 +3988,8 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid | |
489 | 489 | /* This is only valid for single tasks */ |
490 | 490 | if (pid <= 0 || tgid <= 0) |
491 | 491 | return -EINVAL; |
@@ -494,7 +494,7 @@ | ||
494 | 494 | |
495 | 495 | return do_tkill(tgid, pid, sig); |
496 | 496 | } |
497 | -@@ -3974,6 +3993,8 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, | |
497 | +@@ -3987,6 +4006,8 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, | |
498 | 498 | /* This is only valid for single tasks */ |
499 | 499 | if (pid <= 0) |
500 | 500 | return -EINVAL; |
@@ -503,7 +503,7 @@ | ||
503 | 503 | |
504 | 504 | return do_tkill(0, pid, sig); |
505 | 505 | } |
506 | -@@ -3986,6 +4007,8 @@ static int do_rt_sigqueueinfo(pid_t pid, | |
506 | +@@ -3999,6 +4020,8 @@ static int do_rt_sigqueueinfo(pid_t pid, | |
507 | 507 | if ((info->si_code >= 0 || info->si_code == SI_TKILL) && |
508 | 508 | (task_pid_vnr(current) != pid)) |
509 | 509 | return -EPERM; |
@@ -512,7 +512,7 @@ | ||
512 | 512 | |
513 | 513 | /* POSIX.1b doesn't mention process groups. */ |
514 | 514 | return kill_proc_info(sig, info, pid); |
515 | -@@ -4033,6 +4056,8 @@ static int do_rt_tgsigqueueinfo(pid_t tg | |
515 | +@@ -4046,6 +4069,8 @@ static int do_rt_tgsigqueueinfo(pid_t tg | |
516 | 516 | if ((info->si_code >= 0 || info->si_code == SI_TKILL) && |
517 | 517 | (task_pid_vnr(current) != pid)) |
518 | 518 | return -EPERM; |
@@ -521,8 +521,8 @@ | ||
521 | 521 | |
522 | 522 | return do_send_specific(tgid, pid, sig, info); |
523 | 523 | } |
524 | ---- linux-5.18.orig/kernel/sys.c | |
525 | -+++ linux-5.18/kernel/sys.c | |
524 | +--- linux-5.18.5.orig/kernel/sys.c | |
525 | ++++ linux-5.18.5/kernel/sys.c | |
526 | 526 | @@ -212,6 +212,10 @@ SYSCALL_DEFINE3(setpriority, int, which, |
527 | 527 | |
528 | 528 | if (which > PRIO_USER || which < PRIO_PROCESS) |
@@ -552,9 +552,9 @@ | ||
552 | 552 | |
553 | 553 | errno = -EFAULT; |
554 | 554 | if (!copy_from_user(tmp, name, len)) { |
555 | ---- linux-5.18.orig/kernel/time/timekeeping.c | |
556 | -+++ linux-5.18/kernel/time/timekeeping.c | |
557 | -@@ -22,6 +22,7 @@ | |
555 | +--- linux-5.18.5.orig/kernel/time/timekeeping.c | |
556 | ++++ linux-5.18.5/kernel/time/timekeeping.c | |
557 | +@@ -23,6 +23,7 @@ | |
558 | 558 | #include <linux/pvclock_gtod.h> |
559 | 559 | #include <linux/compiler.h> |
560 | 560 | #include <linux/audit.h> |
@@ -562,7 +562,7 @@ | ||
562 | 562 | |
563 | 563 | #include "tick-internal.h" |
564 | 564 | #include "ntp_internal.h" |
565 | -@@ -2327,10 +2328,15 @@ static int timekeeping_validate_timex(co | |
565 | +@@ -2328,10 +2329,15 @@ static int timekeeping_validate_timex(co | |
566 | 566 | if (!(txc->modes & ADJ_OFFSET_READONLY) && |
567 | 567 | !capable(CAP_SYS_TIME)) |
568 | 568 | return -EPERM; |
@@ -578,7 +578,7 @@ | ||
578 | 578 | /* |
579 | 579 | * if the quartz is off by more than 10% then |
580 | 580 | * something is VERY wrong! |
581 | -@@ -2345,6 +2351,8 @@ static int timekeeping_validate_timex(co | |
581 | +@@ -2346,6 +2352,8 @@ static int timekeeping_validate_timex(co | |
582 | 582 | /* In order to inject time, you gotta be super-user! */ |
583 | 583 | if (!capable(CAP_SYS_TIME)) |
584 | 584 | return -EPERM; |
@@ -587,8 +587,8 @@ | ||
587 | 587 | |
588 | 588 | /* |
589 | 589 | * Validate if a timespec/timeval used to inject a time |
590 | ---- linux-5.18.orig/net/ipv4/raw.c | |
591 | -+++ linux-5.18/net/ipv4/raw.c | |
590 | +--- linux-5.18.5.orig/net/ipv4/raw.c | |
591 | ++++ linux-5.18.5/net/ipv4/raw.c | |
592 | 592 | @@ -772,6 +772,10 @@ static int raw_recvmsg(struct sock *sk, |
593 | 593 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
594 | 594 | if (!skb) |
@@ -600,8 +600,8 @@ | ||
600 | 600 | |
601 | 601 | copied = skb->len; |
602 | 602 | if (len < copied) { |
603 | ---- linux-5.18.orig/net/ipv4/udp.c | |
604 | -+++ linux-5.18/net/ipv4/udp.c | |
603 | +--- linux-5.18.5.orig/net/ipv4/udp.c | |
604 | ++++ linux-5.18.5/net/ipv4/udp.c | |
605 | 605 | @@ -1862,6 +1862,8 @@ try_again: |
606 | 606 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
607 | 607 | if (!skb) |
@@ -611,8 +611,8 @@ | ||
611 | 611 | |
612 | 612 | ulen = udp_skb_len(skb); |
613 | 613 | copied = len; |
614 | ---- linux-5.18.orig/net/ipv6/raw.c | |
615 | -+++ linux-5.18/net/ipv6/raw.c | |
614 | +--- linux-5.18.5.orig/net/ipv6/raw.c | |
615 | ++++ linux-5.18.5/net/ipv6/raw.c | |
616 | 616 | @@ -480,6 +480,10 @@ static int rawv6_recvmsg(struct sock *sk |
617 | 617 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
618 | 618 | if (!skb) |
@@ -624,9 +624,9 @@ | ||
624 | 624 | |
625 | 625 | copied = skb->len; |
626 | 626 | if (copied > len) { |
627 | ---- linux-5.18.orig/net/ipv6/udp.c | |
628 | -+++ linux-5.18/net/ipv6/udp.c | |
629 | -@@ -345,6 +345,8 @@ try_again: | |
627 | +--- linux-5.18.5.orig/net/ipv6/udp.c | |
628 | ++++ linux-5.18.5/net/ipv6/udp.c | |
629 | +@@ -346,6 +346,8 @@ try_again: | |
630 | 630 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
631 | 631 | if (!skb) |
632 | 632 | return err; |
@@ -635,8 +635,8 @@ | ||
635 | 635 | |
636 | 636 | ulen = udp6_skb_len(skb); |
637 | 637 | copied = len; |
638 | ---- linux-5.18.orig/net/socket.c | |
639 | -+++ linux-5.18/net/socket.c | |
638 | +--- linux-5.18.5.orig/net/socket.c | |
639 | ++++ linux-5.18.5/net/socket.c | |
640 | 640 | @@ -1779,6 +1779,10 @@ struct file *do_accept(struct file *file |
641 | 641 | if (err < 0) |
642 | 642 | goto out_fd; |
@@ -648,8 +648,8 @@ | ||
648 | 648 | if (upeer_sockaddr) { |
649 | 649 | len = newsock->ops->getname(newsock, |
650 | 650 | (struct sockaddr *)&address, 2); |
651 | ---- linux-5.18.orig/net/unix/af_unix.c | |
652 | -+++ linux-5.18/net/unix/af_unix.c | |
651 | +--- linux-5.18.5.orig/net/unix/af_unix.c | |
652 | ++++ linux-5.18.5/net/unix/af_unix.c | |
653 | 653 | @@ -2419,6 +2419,10 @@ int __unix_dgram_recvmsg(struct sock *sk |
654 | 654 | EPOLLOUT | EPOLLWRNORM | |
655 | 655 | EPOLLWRBAND); |
@@ -669,8 +669,8 @@ | ||
669 | 669 | mutex_unlock(&u->iolock); |
670 | 670 | out: |
671 | 671 | return err; |
672 | ---- linux-5.18.orig/security/Kconfig | |
673 | -+++ linux-5.18/security/Kconfig | |
672 | +--- linux-5.18.5.orig/security/Kconfig | |
673 | ++++ linux-5.18.5/security/Kconfig | |
674 | 674 | @@ -282,5 +282,7 @@ config LSM |
675 | 675 | |
676 | 676 | source "security/Kconfig.hardening" |
@@ -679,8 +679,8 @@ | ||
679 | 679 | + |
680 | 680 | endmenu |
681 | 681 | |
682 | ---- linux-5.18.orig/security/Makefile | |
683 | -+++ linux-5.18/security/Makefile | |
682 | +--- linux-5.18.5.orig/security/Makefile | |
683 | ++++ linux-5.18.5/security/Makefile | |
684 | 684 | @@ -27,3 +27,6 @@ obj-$(CONFIG_SECURITY_LANDLOCK) += land |
685 | 685 | |
686 | 686 | # Object integrity file lists |
@@ -688,9 +688,9 @@ | ||
688 | 688 | + |
689 | 689 | +subdir-$(CONFIG_CCSECURITY) += ccsecurity |
690 | 690 | +obj-$(CONFIG_CCSECURITY) += ccsecurity/ |
691 | ---- linux-5.18.orig/security/security.c | |
692 | -+++ linux-5.18/security/security.c | |
693 | -@@ -1661,7 +1661,9 @@ int security_task_alloc(struct task_stru | |
691 | +--- linux-5.18.5.orig/security/security.c | |
692 | ++++ linux-5.18.5/security/security.c | |
693 | +@@ -1663,7 +1663,9 @@ int security_task_alloc(struct task_stru | |
694 | 694 | |
695 | 695 | if (rc) |
696 | 696 | return rc; |
@@ -701,7 +701,7 @@ | ||
701 | 701 | if (unlikely(rc)) |
702 | 702 | security_task_free(task); |
703 | 703 | return rc; |
704 | -@@ -1670,6 +1672,7 @@ int security_task_alloc(struct task_stru | |
704 | +@@ -1672,6 +1674,7 @@ int security_task_alloc(struct task_stru | |
705 | 705 | void security_task_free(struct task_struct *task) |
706 | 706 | { |
707 | 707 | call_void_hook(task_free, task); |
@@ -1,6 +1,6 @@ | ||
1 | -This is TOMOYO Linux patch for kernel 5.19-rc1. | |
1 | +This is TOMOYO Linux patch for kernel 5.19-rc2. | |
2 | 2 | |
3 | -Source code for this patch is https://git.kernel.org/torvalds/t/linux-5.19-rc1.tar.gz | |
3 | +Source code for this patch is https://git.kernel.org/torvalds/t/linux-5.19-rc2.tar.gz | |
4 | 4 | --- |
5 | 5 | fs/exec.c | 2 - |
6 | 6 | fs/open.c | 2 + |
@@ -10,7 +10,7 @@ | ||
10 | 10 | include/net/ip.h | 4 +++ |
11 | 11 | init/init_task.c | 4 +++ |
12 | 12 | kernel/kexec.c | 4 ++- |
13 | - kernel/module.c | 5 +++ | |
13 | + kernel/module/main.c | 5 +++ | |
14 | 14 | kernel/ptrace.c | 10 +++++++ |
15 | 15 | kernel/reboot.c | 3 ++ |
16 | 16 | kernel/sched/core.c | 2 + |
@@ -28,9 +28,9 @@ | ||
28 | 28 | security/security.c | 5 +++ |
29 | 29 | 24 files changed, 150 insertions(+), 30 deletions(-) |
30 | 30 | |
31 | ---- linux.orig/fs/exec.c | |
32 | -+++ linux/fs/exec.c | |
33 | -@@ -1833,7 +1833,7 @@ static int bprm_execve(struct linux_binp | |
31 | +--- linux-5.19-rc2.orig/fs/exec.c | |
32 | ++++ linux-5.19-rc2/fs/exec.c | |
33 | +@@ -1835,7 +1835,7 @@ static int bprm_execve(struct linux_binp | |
34 | 34 | if (retval) |
35 | 35 | goto out; |
36 | 36 |
@@ -39,9 +39,9 @@ | ||
39 | 39 | if (retval < 0) |
40 | 40 | goto out; |
41 | 41 | |
42 | ---- linux.orig/fs/open.c | |
43 | -+++ linux/fs/open.c | |
44 | -@@ -1374,6 +1374,8 @@ SYSCALL_DEFINE3(close_range, unsigned in | |
42 | +--- linux-5.19-rc2.orig/fs/open.c | |
43 | ++++ linux-5.19-rc2/fs/open.c | |
44 | +@@ -1439,6 +1439,8 @@ SYSCALL_DEFINE3(close_range, unsigned in | |
45 | 45 | */ |
46 | 46 | SYSCALL_DEFINE0(vhangup) |
47 | 47 | { |
@@ -50,8 +50,8 @@ | ||
50 | 50 | if (capable(CAP_SYS_TTY_CONFIG)) { |
51 | 51 | tty_vhangup_self(); |
52 | 52 | return 0; |
53 | ---- linux.orig/fs/proc/version.c | |
54 | -+++ linux/fs/proc/version.c | |
53 | +--- linux-5.19-rc2.orig/fs/proc/version.c | |
54 | ++++ linux-5.19-rc2/fs/proc/version.c | |
55 | 55 | @@ -21,3 +21,10 @@ static int __init proc_version_init(void |
56 | 56 | return 0; |
57 | 57 | } |
@@ -59,12 +59,12 @@ | ||
59 | 59 | + |
60 | 60 | +static int __init ccs_show_version(void) |
61 | 61 | +{ |
62 | -+ printk(KERN_INFO "Hook version: 5.18+ 2022/05/25\n"); | |
62 | ++ printk(KERN_INFO "Hook version: 5.19-rc2 2022/06/17\n"); | |
63 | 63 | + return 0; |
64 | 64 | +} |
65 | 65 | +fs_initcall(ccs_show_version); |
66 | ---- linux.orig/include/linux/sched.h | |
67 | -+++ linux/include/linux/sched.h | |
66 | +--- linux-5.19-rc2.orig/include/linux/sched.h | |
67 | ++++ linux-5.19-rc2/include/linux/sched.h | |
68 | 68 | @@ -44,6 +44,7 @@ struct blk_plug; |
69 | 69 | struct bpf_local_storage; |
70 | 70 | struct bpf_run_ctx; |
@@ -73,7 +73,7 @@ | ||
73 | 73 | struct cfs_rq; |
74 | 74 | struct fs_struct; |
75 | 75 | struct futex_pi_state; |
76 | -@@ -1379,6 +1380,10 @@ struct task_struct { | |
76 | +@@ -1377,6 +1378,10 @@ struct task_struct { | |
77 | 77 | /* Pause tracing: */ |
78 | 78 | atomic_t tracing_graph_pause; |
79 | 79 | #endif |
@@ -84,8 +84,8 @@ | ||
84 | 84 | |
85 | 85 | #ifdef CONFIG_TRACING |
86 | 86 | /* State flags for use by tracers: */ |
87 | ---- linux.orig/include/linux/security.h | |
88 | -+++ linux/include/linux/security.h | |
87 | +--- linux-5.19-rc2.orig/include/linux/security.h | |
88 | ++++ linux-5.19-rc2/include/linux/security.h | |
89 | 89 | @@ -59,6 +59,7 @@ struct fs_parameter; |
90 | 90 | enum fs_value_type; |
91 | 91 | struct watch; |
@@ -305,8 +305,8 @@ | ||
305 | 305 | } |
306 | 306 | #endif /* CONFIG_SECURITY_PATH */ |
307 | 307 | |
308 | ---- linux.orig/include/net/ip.h | |
309 | -+++ linux/include/net/ip.h | |
308 | +--- linux-5.19-rc2.orig/include/net/ip.h | |
309 | ++++ linux-5.19-rc2/include/net/ip.h | |
310 | 310 | @@ -345,6 +345,8 @@ void inet_get_local_port_range(struct ne |
311 | 311 | #ifdef CONFIG_SYSCTL |
312 | 312 | static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port) |
@@ -325,8 +325,8 @@ | ||
325 | 325 | return false; |
326 | 326 | } |
327 | 327 | |
328 | ---- linux.orig/init/init_task.c | |
329 | -+++ linux/init/init_task.c | |
328 | +--- linux-5.19-rc2.orig/init/init_task.c | |
329 | ++++ linux-5.19-rc2/init/init_task.c | |
330 | 330 | @@ -209,6 +209,10 @@ struct task_struct init_task |
331 | 331 | #ifdef CONFIG_SECCOMP_FILTER |
332 | 332 | .seccomp = { .filter_count = ATOMIC_INIT(0) }, |
@@ -338,8 +338,8 @@ | ||
338 | 338 | }; |
339 | 339 | EXPORT_SYMBOL(init_task); |
340 | 340 | |
341 | ---- linux.orig/kernel/kexec.c | |
342 | -+++ linux/kernel/kexec.c | |
341 | +--- linux-5.19-rc2.orig/kernel/kexec.c | |
342 | ++++ linux-5.19-rc2/kernel/kexec.c | |
343 | 343 | @@ -16,7 +16,7 @@ |
344 | 344 | #include <linux/syscalls.h> |
345 | 345 | #include <linux/vmalloc.h> |
@@ -358,18 +358,18 @@ | ||
358 | 358 | |
359 | 359 | /* Permit LSMs and IMA to fail the kexec */ |
360 | 360 | result = security_kernel_load_data(LOADING_KEXEC_IMAGE, false); |
361 | ---- linux.orig/kernel/module.c | |
362 | -+++ linux/kernel/module.c | |
363 | -@@ -59,6 +59,7 @@ | |
364 | - #include <linux/audit.h> | |
365 | - #include <uapi/linux/module.h> | |
366 | - #include "module-internal.h" | |
367 | -+#include <linux/ccsecurity.h> | |
361 | +--- linux-5.19-rc2.orig/kernel/module/main.c | |
362 | ++++ linux-5.19-rc2/kernel/module/main.c | |
363 | +@@ -58,6 +58,7 @@ | |
368 | 364 | |
369 | 365 | #define CREATE_TRACE_POINTS |
370 | 366 | #include <trace/events/module.h> |
371 | -@@ -918,6 +919,8 @@ SYSCALL_DEFINE2(delete_module, const cha | |
367 | ++#include <linux/ccsecurity.h> | |
372 | 368 | |
369 | + /* | |
370 | + * Mutex protects: | |
371 | +@@ -698,6 +699,8 @@ SYSCALL_DEFINE2(delete_module, const cha | |
372 | + | |
373 | 373 | if (!capable(CAP_SYS_MODULE) || modules_disabled) |
374 | 374 | return -EPERM; |
375 | 375 | + if (!ccs_capable(CCS_USE_KERNEL_MODULE)) |
@@ -377,7 +377,7 @@ | ||
377 | 377 | |
378 | 378 | if (strncpy_from_user(name, name_user, MODULE_NAME_LEN-1) < 0) |
379 | 379 | return -EFAULT; |
380 | -@@ -3822,6 +3825,8 @@ static int may_init_module(void) | |
380 | +@@ -2525,6 +2528,8 @@ static int may_init_module(void) | |
381 | 381 | { |
382 | 382 | if (!capable(CAP_SYS_MODULE) || modules_disabled) |
383 | 383 | return -EPERM; |
@@ -386,9 +386,9 @@ | ||
386 | 386 | |
387 | 387 | return 0; |
388 | 388 | } |
389 | ---- linux.orig/kernel/ptrace.c | |
390 | -+++ linux/kernel/ptrace.c | |
391 | -@@ -1294,6 +1294,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
389 | +--- linux-5.19-rc2.orig/kernel/ptrace.c | |
390 | ++++ linux-5.19-rc2/kernel/ptrace.c | |
391 | +@@ -1271,6 +1271,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
392 | 392 | { |
393 | 393 | struct task_struct *child; |
394 | 394 | long ret; |
@@ -400,7 +400,7 @@ | ||
400 | 400 | |
401 | 401 | if (request == PTRACE_TRACEME) { |
402 | 402 | ret = ptrace_traceme(); |
403 | -@@ -1441,6 +1446,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
403 | +@@ -1410,6 +1415,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
404 | 404 | { |
405 | 405 | struct task_struct *child; |
406 | 406 | long ret; |
@@ -412,8 +412,8 @@ | ||
412 | 412 | |
413 | 413 | if (request == PTRACE_TRACEME) { |
414 | 414 | ret = ptrace_traceme(); |
415 | ---- linux.orig/kernel/reboot.c | |
416 | -+++ linux/kernel/reboot.c | |
415 | +--- linux-5.19-rc2.orig/kernel/reboot.c | |
416 | ++++ linux-5.19-rc2/kernel/reboot.c | |
417 | 417 | @@ -18,6 +18,7 @@ |
418 | 418 | #include <linux/syscalls.h> |
419 | 419 | #include <linux/syscore_ops.h> |
@@ -422,7 +422,7 @@ | ||
422 | 422 | |
423 | 423 | /* |
424 | 424 | * this indicates whether you can reboot with ctrl-alt-del: the default is yes |
425 | -@@ -327,6 +328,8 @@ SYSCALL_DEFINE4(reboot, int, magic1, int | |
425 | +@@ -698,6 +699,8 @@ SYSCALL_DEFINE4(reboot, int, magic1, int | |
426 | 426 | magic2 != LINUX_REBOOT_MAGIC2B && |
427 | 427 | magic2 != LINUX_REBOOT_MAGIC2C)) |
428 | 428 | return -EINVAL; |
@@ -431,9 +431,9 @@ | ||
431 | 431 | |
432 | 432 | /* |
433 | 433 | * If pid namespaces are enabled and the current task is in a child |
434 | ---- linux.orig/kernel/sched/core.c | |
435 | -+++ linux/kernel/sched/core.c | |
436 | -@@ -6956,6 +6956,8 @@ int can_nice(const struct task_struct *p | |
434 | +--- linux-5.19-rc2.orig/kernel/sched/core.c | |
435 | ++++ linux-5.19-rc2/kernel/sched/core.c | |
436 | +@@ -6993,6 +6993,8 @@ int can_nice(const struct task_struct *p | |
437 | 437 | SYSCALL_DEFINE1(nice, int, increment) |
438 | 438 | { |
439 | 439 | long nice, retval; |
@@ -442,9 +442,9 @@ | ||
442 | 442 | |
443 | 443 | /* |
444 | 444 | * Setpriority might change our priority at the same moment. |
445 | ---- linux.orig/kernel/signal.c | |
446 | -+++ linux/kernel/signal.c | |
447 | -@@ -3788,6 +3788,8 @@ static inline void prepare_kill_siginfo( | |
445 | +--- linux-5.19-rc2.orig/kernel/signal.c | |
446 | ++++ linux-5.19-rc2/kernel/signal.c | |
447 | +@@ -3770,6 +3770,8 @@ static inline void prepare_kill_siginfo( | |
448 | 448 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
449 | 449 | { |
450 | 450 | struct kernel_siginfo info; |
@@ -453,7 +453,7 @@ | ||
453 | 453 | |
454 | 454 | prepare_kill_siginfo(sig, &info); |
455 | 455 | |
456 | -@@ -3887,6 +3889,21 @@ SYSCALL_DEFINE4(pidfd_send_signal, int, | |
456 | +@@ -3869,6 +3871,21 @@ SYSCALL_DEFINE4(pidfd_send_signal, int, | |
457 | 457 | if (!access_pidfd_pidns(pid)) |
458 | 458 | goto err; |
459 | 459 |
@@ -475,7 +475,7 @@ | ||
475 | 475 | if (info) { |
476 | 476 | ret = copy_siginfo_from_user_any(&kinfo, info); |
477 | 477 | if (unlikely(ret)) |
478 | -@@ -3971,6 +3988,8 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid | |
478 | +@@ -3953,6 +3970,8 @@ SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid | |
479 | 479 | /* This is only valid for single tasks */ |
480 | 480 | if (pid <= 0 || tgid <= 0) |
481 | 481 | return -EINVAL; |
@@ -484,7 +484,7 @@ | ||
484 | 484 | |
485 | 485 | return do_tkill(tgid, pid, sig); |
486 | 486 | } |
487 | -@@ -3987,6 +4006,8 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, | |
487 | +@@ -3969,6 +3988,8 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, | |
488 | 488 | /* This is only valid for single tasks */ |
489 | 489 | if (pid <= 0) |
490 | 490 | return -EINVAL; |
@@ -493,7 +493,7 @@ | ||
493 | 493 | |
494 | 494 | return do_tkill(0, pid, sig); |
495 | 495 | } |
496 | -@@ -3999,6 +4020,8 @@ static int do_rt_sigqueueinfo(pid_t pid, | |
496 | +@@ -3981,6 +4002,8 @@ static int do_rt_sigqueueinfo(pid_t pid, | |
497 | 497 | if ((info->si_code >= 0 || info->si_code == SI_TKILL) && |
498 | 498 | (task_pid_vnr(current) != pid)) |
499 | 499 | return -EPERM; |
@@ -502,7 +502,7 @@ | ||
502 | 502 | |
503 | 503 | /* POSIX.1b doesn't mention process groups. */ |
504 | 504 | return kill_proc_info(sig, info, pid); |
505 | -@@ -4046,6 +4069,8 @@ static int do_rt_tgsigqueueinfo(pid_t tg | |
505 | +@@ -4028,6 +4051,8 @@ static int do_rt_tgsigqueueinfo(pid_t tg | |
506 | 506 | if ((info->si_code >= 0 || info->si_code == SI_TKILL) && |
507 | 507 | (task_pid_vnr(current) != pid)) |
508 | 508 | return -EPERM; |
@@ -511,8 +511,8 @@ | ||
511 | 511 | |
512 | 512 | return do_send_specific(tgid, pid, sig, info); |
513 | 513 | } |
514 | ---- linux.orig/kernel/sys.c | |
515 | -+++ linux/kernel/sys.c | |
514 | +--- linux-5.19-rc2.orig/kernel/sys.c | |
515 | ++++ linux-5.19-rc2/kernel/sys.c | |
516 | 516 | @@ -218,6 +218,10 @@ SYSCALL_DEFINE3(setpriority, int, which, |
517 | 517 | |
518 | 518 | if (which > PRIO_USER || which < PRIO_PROCESS) |
@@ -542,8 +542,8 @@ | ||
542 | 542 | |
543 | 543 | errno = -EFAULT; |
544 | 544 | if (!copy_from_user(tmp, name, len)) { |
545 | ---- linux.orig/kernel/time/timekeeping.c | |
546 | -+++ linux/kernel/time/timekeeping.c | |
545 | +--- linux-5.19-rc2.orig/kernel/time/timekeeping.c | |
546 | ++++ linux-5.19-rc2/kernel/time/timekeeping.c | |
547 | 547 | @@ -23,6 +23,7 @@ |
548 | 548 | #include <linux/pvclock_gtod.h> |
549 | 549 | #include <linux/compiler.h> |
@@ -577,10 +577,10 @@ | ||
577 | 577 | |
578 | 578 | /* |
579 | 579 | * Validate if a timespec/timeval used to inject a time |
580 | ---- linux.orig/net/ipv4/raw.c | |
581 | -+++ linux/net/ipv4/raw.c | |
580 | +--- linux-5.19-rc2.orig/net/ipv4/raw.c | |
581 | ++++ linux-5.19-rc2/net/ipv4/raw.c | |
582 | 582 | @@ -772,6 +772,10 @@ static int raw_recvmsg(struct sock *sk, |
583 | - skb = skb_recv_datagram(sk, flags, noblock, &err); | |
583 | + skb = skb_recv_datagram(sk, flags, &err); | |
584 | 584 | if (!skb) |
585 | 585 | goto out; |
586 | 586 | + if (ccs_socket_post_recvmsg_permission(sk, skb, flags)) { |
@@ -590,10 +590,10 @@ | ||
590 | 590 | |
591 | 591 | copied = skb->len; |
592 | 592 | if (len < copied) { |
593 | ---- linux.orig/net/ipv4/udp.c | |
594 | -+++ linux/net/ipv4/udp.c | |
595 | -@@ -1862,6 +1862,8 @@ try_again: | |
596 | - skb = __skb_recv_udp(sk, flags, noblock, &off, &err); | |
593 | +--- linux-5.19-rc2.orig/net/ipv4/udp.c | |
594 | ++++ linux-5.19-rc2/net/ipv4/udp.c | |
595 | +@@ -1861,6 +1861,8 @@ try_again: | |
596 | + skb = __skb_recv_udp(sk, flags, &off, &err); | |
597 | 597 | if (!skb) |
598 | 598 | return err; |
599 | 599 | + if (ccs_socket_post_recvmsg_permission(sk, skb, flags)) |
@@ -601,10 +601,10 @@ | ||
601 | 601 | |
602 | 602 | ulen = udp_skb_len(skb); |
603 | 603 | copied = len; |
604 | ---- linux.orig/net/ipv6/raw.c | |
605 | -+++ linux/net/ipv6/raw.c | |
604 | +--- linux-5.19-rc2.orig/net/ipv6/raw.c | |
605 | ++++ linux-5.19-rc2/net/ipv6/raw.c | |
606 | 606 | @@ -480,6 +480,10 @@ static int rawv6_recvmsg(struct sock *sk |
607 | - skb = skb_recv_datagram(sk, flags, noblock, &err); | |
607 | + skb = skb_recv_datagram(sk, flags, &err); | |
608 | 608 | if (!skb) |
609 | 609 | goto out; |
610 | 610 | + if (ccs_socket_post_recvmsg_permission(sk, skb, flags)) { |
@@ -614,10 +614,10 @@ | ||
614 | 614 | |
615 | 615 | copied = skb->len; |
616 | 616 | if (copied > len) { |
617 | ---- linux.orig/net/ipv6/udp.c | |
618 | -+++ linux/net/ipv6/udp.c | |
619 | -@@ -345,6 +345,8 @@ try_again: | |
620 | - skb = __skb_recv_udp(sk, flags, noblock, &off, &err); | |
617 | +--- linux-5.19-rc2.orig/net/ipv6/udp.c | |
618 | ++++ linux-5.19-rc2/net/ipv6/udp.c | |
619 | +@@ -346,6 +346,8 @@ try_again: | |
620 | + skb = __skb_recv_udp(sk, flags, &off, &err); | |
621 | 621 | if (!skb) |
622 | 622 | return err; |
623 | 623 | + if (ccs_socket_post_recvmsg_permission(sk, skb, flags)) |
@@ -625,9 +625,9 @@ | ||
625 | 625 | |
626 | 626 | ulen = udp6_skb_len(skb); |
627 | 627 | copied = len; |
628 | ---- linux.orig/net/socket.c | |
629 | -+++ linux/net/socket.c | |
630 | -@@ -1811,6 +1811,10 @@ struct file *do_accept(struct file *file | |
628 | +--- linux-5.19-rc2.orig/net/socket.c | |
629 | ++++ linux-5.19-rc2/net/socket.c | |
630 | +@@ -1858,6 +1858,10 @@ struct file *do_accept(struct file *file | |
631 | 631 | if (err < 0) |
632 | 632 | goto out_fd; |
633 | 633 |
@@ -638,9 +638,9 @@ | ||
638 | 638 | if (upeer_sockaddr) { |
639 | 639 | len = newsock->ops->getname(newsock, |
640 | 640 | (struct sockaddr *)&address, 2); |
641 | ---- linux.orig/net/unix/af_unix.c | |
642 | -+++ linux/net/unix/af_unix.c | |
643 | -@@ -2417,6 +2417,10 @@ int __unix_dgram_recvmsg(struct sock *sk | |
641 | +--- linux-5.19-rc2.orig/net/unix/af_unix.c | |
642 | ++++ linux-5.19-rc2/net/unix/af_unix.c | |
643 | +@@ -2418,6 +2418,10 @@ int __unix_dgram_recvmsg(struct sock *sk | |
644 | 644 | EPOLLOUT | EPOLLWRNORM | |
645 | 645 | EPOLLWRBAND); |
646 | 646 |
@@ -651,7 +651,7 @@ | ||
651 | 651 | if (msg->msg_name) |
652 | 652 | unix_copy_addr(msg, skb->sk); |
653 | 653 | |
654 | -@@ -2467,6 +2471,7 @@ int __unix_dgram_recvmsg(struct sock *sk | |
654 | +@@ -2468,6 +2472,7 @@ int __unix_dgram_recvmsg(struct sock *sk | |
655 | 655 | |
656 | 656 | out_free: |
657 | 657 | skb_free_datagram(sk, skb); |
@@ -659,8 +659,8 @@ | ||
659 | 659 | mutex_unlock(&u->iolock); |
660 | 660 | out: |
661 | 661 | return err; |
662 | ---- linux.orig/security/Kconfig | |
663 | -+++ linux/security/Kconfig | |
662 | +--- linux-5.19-rc2.orig/security/Kconfig | |
663 | ++++ linux-5.19-rc2/security/Kconfig | |
664 | 664 | @@ -271,5 +271,7 @@ config LSM |
665 | 665 | |
666 | 666 | source "security/Kconfig.hardening" |
@@ -669,8 +669,8 @@ | ||
669 | 669 | + |
670 | 670 | endmenu |
671 | 671 | |
672 | ---- linux.orig/security/Makefile | |
673 | -+++ linux/security/Makefile | |
672 | +--- linux-5.19-rc2.orig/security/Makefile | |
673 | ++++ linux-5.19-rc2/security/Makefile | |
674 | 674 | @@ -27,3 +27,6 @@ obj-$(CONFIG_SECURITY_LANDLOCK) += land |
675 | 675 | |
676 | 676 | # Object integrity file lists |
@@ -678,8 +678,8 @@ | ||
678 | 678 | + |
679 | 679 | +subdir-$(CONFIG_CCSECURITY) += ccsecurity |
680 | 680 | +obj-$(CONFIG_CCSECURITY) += ccsecurity/ |
681 | ---- linux.orig/security/security.c | |
682 | -+++ linux/security/security.c | |
681 | +--- linux-5.19-rc2.orig/security/security.c | |
682 | ++++ linux-5.19-rc2/security/security.c | |
683 | 683 | @@ -1655,7 +1655,9 @@ int security_task_alloc(struct task_stru |
684 | 684 | |
685 | 685 | if (rc) |
@@ -1,6 +1,6 @@ | ||
1 | -This is TOMOYO Linux patch for kernel 5.4.195. | |
1 | +This is TOMOYO Linux patch for kernel 5.4.199. | |
2 | 2 | |
3 | -Source code for this patch is https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.4.195.tar.xz | |
3 | +Source code for this patch is https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.4.199.tar.xz | |
4 | 4 | --- |
5 | 5 | fs/exec.c | 2 - |
6 | 6 | fs/open.c | 2 + |
@@ -28,9 +28,9 @@ | ||
28 | 28 | security/security.c | 5 ++- |
29 | 29 | 24 files changed, 160 insertions(+), 30 deletions(-) |
30 | 30 | |
31 | ---- linux-5.4.195.orig/fs/exec.c | |
32 | -+++ linux-5.4.195/fs/exec.c | |
33 | -@@ -1730,7 +1730,7 @@ static int exec_binprm(struct linux_binp | |
31 | +--- linux-5.4.199.orig/fs/exec.c | |
32 | ++++ linux-5.4.199/fs/exec.c | |
33 | +@@ -1739,7 +1739,7 @@ static int exec_binprm(struct linux_binp | |
34 | 34 | old_vpid = task_pid_nr_ns(current, task_active_pid_ns(current->parent)); |
35 | 35 | rcu_read_unlock(); |
36 | 36 |
@@ -39,8 +39,8 @@ | ||
39 | 39 | if (ret >= 0) { |
40 | 40 | audit_bprm(bprm); |
41 | 41 | trace_sched_process_exec(current, old_pid, bprm); |
42 | ---- linux-5.4.195.orig/fs/open.c | |
43 | -+++ linux-5.4.195/fs/open.c | |
42 | +--- linux-5.4.199.orig/fs/open.c | |
43 | ++++ linux-5.4.199/fs/open.c | |
44 | 44 | @@ -1205,6 +1205,8 @@ SYSCALL_DEFINE1(close, unsigned int, fd) |
45 | 45 | */ |
46 | 46 | SYSCALL_DEFINE0(vhangup) |
@@ -50,8 +50,8 @@ | ||
50 | 50 | if (capable(CAP_SYS_TTY_CONFIG)) { |
51 | 51 | tty_vhangup_self(); |
52 | 52 | return 0; |
53 | ---- linux-5.4.195.orig/fs/proc/version.c | |
54 | -+++ linux-5.4.195/fs/proc/version.c | |
53 | +--- linux-5.4.199.orig/fs/proc/version.c | |
54 | ++++ linux-5.4.199/fs/proc/version.c | |
55 | 55 | @@ -21,3 +21,10 @@ static int __init proc_version_init(void |
56 | 56 | return 0; |
57 | 57 | } |
@@ -59,12 +59,12 @@ | ||
59 | 59 | + |
60 | 60 | +static int __init ccs_show_version(void) |
61 | 61 | +{ |
62 | -+ printk(KERN_INFO "Hook version: 5.4.195 2022/05/23\n"); | |
62 | ++ printk(KERN_INFO "Hook version: 5.4.199 2022/06/17\n"); | |
63 | 63 | + return 0; |
64 | 64 | +} |
65 | 65 | +fs_initcall(ccs_show_version); |
66 | ---- linux-5.4.195.orig/include/linux/sched.h | |
67 | -+++ linux-5.4.195/include/linux/sched.h | |
66 | +--- linux-5.4.199.orig/include/linux/sched.h | |
67 | ++++ linux-5.4.199/include/linux/sched.h | |
68 | 68 | @@ -38,6 +38,7 @@ struct backing_dev_info; |
69 | 69 | struct bio_list; |
70 | 70 | struct blk_plug; |
@@ -84,8 +84,8 @@ | ||
84 | 84 | |
85 | 85 | #ifdef CONFIG_GCC_PLUGIN_STACKLEAK |
86 | 86 | unsigned long lowest_stack; |
87 | ---- linux-5.4.195.orig/include/linux/security.h | |
88 | -+++ linux-5.4.195/include/linux/security.h | |
87 | +--- linux-5.4.199.orig/include/linux/security.h | |
88 | ++++ linux-5.4.199/include/linux/security.h | |
89 | 89 | @@ -57,6 +57,7 @@ struct mm_struct; |
90 | 90 | struct fs_context; |
91 | 91 | struct fs_parameter; |
@@ -94,7 +94,7 @@ | ||
94 | 94 | |
95 | 95 | /* Default (no) options for the capable function */ |
96 | 96 | #define CAP_OPT_NONE 0x0 |
97 | -@@ -560,7 +561,10 @@ static inline int security_syslog(int ty | |
97 | +@@ -562,7 +563,10 @@ static inline int security_syslog(int ty | |
98 | 98 | static inline int security_settime64(const struct timespec64 *ts, |
99 | 99 | const struct timezone *tz) |
100 | 100 | { |
@@ -106,7 +106,7 @@ | ||
106 | 106 | } |
107 | 107 | |
108 | 108 | static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages) |
109 | -@@ -637,18 +641,18 @@ static inline int security_sb_mount(cons | |
109 | +@@ -639,18 +643,18 @@ static inline int security_sb_mount(cons | |
110 | 110 | const char *type, unsigned long flags, |
111 | 111 | void *data) |
112 | 112 | { |
@@ -128,7 +128,7 @@ | ||
128 | 128 | } |
129 | 129 | |
130 | 130 | static inline int security_sb_set_mnt_opts(struct super_block *sb, |
131 | -@@ -676,7 +680,7 @@ static inline int security_add_mnt_opt(c | |
131 | +@@ -678,7 +682,7 @@ static inline int security_add_mnt_opt(c | |
132 | 132 | static inline int security_move_mount(const struct path *from_path, |
133 | 133 | const struct path *to_path) |
134 | 134 | { |
@@ -137,7 +137,7 @@ | ||
137 | 137 | } |
138 | 138 | |
139 | 139 | static inline int security_path_notify(const struct path *path, u64 mask, |
140 | -@@ -810,7 +814,7 @@ static inline int security_inode_setattr | |
140 | +@@ -812,7 +816,7 @@ static inline int security_inode_setattr | |
141 | 141 | |
142 | 142 | static inline int security_inode_getattr(const struct path *path) |
143 | 143 | { |
@@ -146,7 +146,7 @@ | ||
146 | 146 | } |
147 | 147 | |
148 | 148 | static inline int security_inode_setxattr(struct dentry *dentry, |
149 | -@@ -902,7 +906,7 @@ static inline void security_file_free(st | |
149 | +@@ -904,7 +908,7 @@ static inline void security_file_free(st | |
150 | 150 | static inline int security_file_ioctl(struct file *file, unsigned int cmd, |
151 | 151 | unsigned long arg) |
152 | 152 | { |
@@ -155,7 +155,7 @@ | ||
155 | 155 | } |
156 | 156 | |
157 | 157 | static inline int security_mmap_file(struct file *file, unsigned long prot, |
158 | -@@ -931,7 +935,7 @@ static inline int security_file_lock(str | |
158 | +@@ -933,7 +937,7 @@ static inline int security_file_lock(str | |
159 | 159 | static inline int security_file_fcntl(struct file *file, unsigned int cmd, |
160 | 160 | unsigned long arg) |
161 | 161 | { |
@@ -164,7 +164,7 @@ | ||
164 | 164 | } |
165 | 165 | |
166 | 166 | static inline void security_file_set_fowner(struct file *file) |
167 | -@@ -953,17 +957,19 @@ static inline int security_file_receive( | |
167 | +@@ -955,17 +959,19 @@ static inline int security_file_receive( | |
168 | 168 | |
169 | 169 | static inline int security_file_open(struct file *file) |
170 | 170 | { |
@@ -187,7 +187,7 @@ | ||
187 | 187 | |
188 | 188 | static inline int security_cred_alloc_blank(struct cred *cred, gfp_t gfp) |
189 | 189 | { |
190 | -@@ -1347,7 +1353,7 @@ static inline int security_unix_may_send | |
190 | +@@ -1349,7 +1355,7 @@ static inline int security_unix_may_send | |
191 | 191 | static inline int security_socket_create(int family, int type, |
192 | 192 | int protocol, int kern) |
193 | 193 | { |
@@ -196,7 +196,7 @@ | ||
196 | 196 | } |
197 | 197 | |
198 | 198 | static inline int security_socket_post_create(struct socket *sock, |
199 | -@@ -1368,19 +1374,19 @@ static inline int security_socket_bind(s | |
199 | +@@ -1370,19 +1376,19 @@ static inline int security_socket_bind(s | |
200 | 200 | struct sockaddr *address, |
201 | 201 | int addrlen) |
202 | 202 | { |
@@ -219,7 +219,7 @@ | ||
219 | 219 | } |
220 | 220 | |
221 | 221 | static inline int security_socket_accept(struct socket *sock, |
222 | -@@ -1392,7 +1398,7 @@ static inline int security_socket_accept | |
222 | +@@ -1394,7 +1400,7 @@ static inline int security_socket_accept | |
223 | 223 | static inline int security_socket_sendmsg(struct socket *sock, |
224 | 224 | struct msghdr *msg, int size) |
225 | 225 | { |
@@ -228,7 +228,7 @@ | ||
228 | 228 | } |
229 | 229 | |
230 | 230 | static inline int security_socket_recvmsg(struct socket *sock, |
231 | -@@ -1679,42 +1685,42 @@ int security_path_chroot(const struct pa | |
231 | +@@ -1681,42 +1687,42 @@ int security_path_chroot(const struct pa | |
232 | 232 | #else /* CONFIG_SECURITY_PATH */ |
233 | 233 | static inline int security_path_unlink(const struct path *dir, struct dentry *dentry) |
234 | 234 | { |
@@ -278,7 +278,7 @@ | ||
278 | 278 | } |
279 | 279 | |
280 | 280 | static inline int security_path_rename(const struct path *old_dir, |
281 | -@@ -1723,22 +1729,32 @@ static inline int security_path_rename(c | |
281 | +@@ -1725,22 +1731,32 @@ static inline int security_path_rename(c | |
282 | 282 | struct dentry *new_dentry, |
283 | 283 | unsigned int flags) |
284 | 284 | { |
@@ -315,8 +315,8 @@ | ||
315 | 315 | } |
316 | 316 | #endif /* CONFIG_SECURITY_PATH */ |
317 | 317 | |
318 | ---- linux-5.4.195.orig/include/net/ip.h | |
319 | -+++ linux-5.4.195/include/net/ip.h | |
318 | +--- linux-5.4.199.orig/include/net/ip.h | |
319 | ++++ linux-5.4.199/include/net/ip.h | |
320 | 320 | @@ -342,6 +342,8 @@ void inet_get_local_port_range(struct ne |
321 | 321 | #ifdef CONFIG_SYSCTL |
322 | 322 | static inline int inet_is_local_reserved_port(struct net *net, int port) |
@@ -335,8 +335,8 @@ | ||
335 | 335 | return 0; |
336 | 336 | } |
337 | 337 | |
338 | ---- linux-5.4.195.orig/init/init_task.c | |
339 | -+++ linux-5.4.195/init/init_task.c | |
338 | +--- linux-5.4.199.orig/init/init_task.c | |
339 | ++++ linux-5.4.199/init/init_task.c | |
340 | 340 | @@ -183,6 +183,10 @@ struct task_struct init_task |
341 | 341 | #ifdef CONFIG_SECURITY |
342 | 342 | .security = NULL, |
@@ -348,8 +348,8 @@ | ||
348 | 348 | }; |
349 | 349 | EXPORT_SYMBOL(init_task); |
350 | 350 | |
351 | ---- linux-5.4.195.orig/kernel/kexec.c | |
352 | -+++ linux-5.4.195/kernel/kexec.c | |
351 | +--- linux-5.4.199.orig/kernel/kexec.c | |
352 | ++++ linux-5.4.199/kernel/kexec.c | |
353 | 353 | @@ -16,7 +16,7 @@ |
354 | 354 | #include <linux/syscalls.h> |
355 | 355 | #include <linux/vmalloc.h> |
@@ -368,8 +368,8 @@ | ||
368 | 368 | |
369 | 369 | /* Permit LSMs and IMA to fail the kexec */ |
370 | 370 | result = security_kernel_load_data(LOADING_KEXEC_IMAGE); |
371 | ---- linux-5.4.195.orig/kernel/module.c | |
372 | -+++ linux-5.4.195/kernel/module.c | |
371 | +--- linux-5.4.199.orig/kernel/module.c | |
372 | ++++ linux-5.4.199/kernel/module.c | |
373 | 373 | @@ -55,6 +55,7 @@ |
374 | 374 | #include <linux/audit.h> |
375 | 375 | #include <uapi/linux/module.h> |
@@ -396,9 +396,9 @@ | ||
396 | 396 | |
397 | 397 | return 0; |
398 | 398 | } |
399 | ---- linux-5.4.195.orig/kernel/ptrace.c | |
400 | -+++ linux-5.4.195/kernel/ptrace.c | |
401 | -@@ -1271,6 +1271,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
399 | +--- linux-5.4.199.orig/kernel/ptrace.c | |
400 | ++++ linux-5.4.199/kernel/ptrace.c | |
401 | +@@ -1270,6 +1270,11 @@ SYSCALL_DEFINE4(ptrace, long, request, l | |
402 | 402 | { |
403 | 403 | struct task_struct *child; |
404 | 404 | long ret; |
@@ -410,7 +410,7 @@ | ||
410 | 410 | |
411 | 411 | if (request == PTRACE_TRACEME) { |
412 | 412 | ret = ptrace_traceme(); |
413 | -@@ -1418,6 +1423,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
413 | +@@ -1417,6 +1422,11 @@ COMPAT_SYSCALL_DEFINE4(ptrace, compat_lo | |
414 | 414 | { |
415 | 415 | struct task_struct *child; |
416 | 416 | long ret; |
@@ -422,8 +422,8 @@ | ||
422 | 422 | |
423 | 423 | if (request == PTRACE_TRACEME) { |
424 | 424 | ret = ptrace_traceme(); |
425 | ---- linux-5.4.195.orig/kernel/reboot.c | |
426 | -+++ linux-5.4.195/kernel/reboot.c | |
425 | +--- linux-5.4.199.orig/kernel/reboot.c | |
426 | ++++ linux-5.4.199/kernel/reboot.c | |
427 | 427 | @@ -17,6 +17,7 @@ |
428 | 428 | #include <linux/syscalls.h> |
429 | 429 | #include <linux/syscore_ops.h> |
@@ -441,8 +441,8 @@ | ||
441 | 441 | |
442 | 442 | /* |
443 | 443 | * If pid namespaces are enabled and the current task is in a child |
444 | ---- linux-5.4.195.orig/kernel/sched/core.c | |
445 | -+++ linux-5.4.195/kernel/sched/core.c | |
444 | +--- linux-5.4.199.orig/kernel/sched/core.c | |
445 | ++++ linux-5.4.199/kernel/sched/core.c | |
446 | 446 | @@ -4677,6 +4677,8 @@ int can_nice(const struct task_struct *p |
447 | 447 | SYSCALL_DEFINE1(nice, int, increment) |
448 | 448 | { |
@@ -452,8 +452,8 @@ | ||
452 | 452 | |
453 | 453 | /* |
454 | 454 | * Setpriority might change our priority at the same moment. |
455 | ---- linux-5.4.195.orig/kernel/signal.c | |
456 | -+++ linux-5.4.195/kernel/signal.c | |
455 | +--- linux-5.4.199.orig/kernel/signal.c | |
456 | ++++ linux-5.4.199/kernel/signal.c | |
457 | 457 | @@ -3634,6 +3634,8 @@ static inline void prepare_kill_siginfo( |
458 | 458 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
459 | 459 | { |
@@ -521,8 +521,8 @@ | ||
521 | 521 | |
522 | 522 | return do_send_specific(tgid, pid, sig, info); |
523 | 523 | } |
524 | ---- linux-5.4.195.orig/kernel/sys.c | |
525 | -+++ linux-5.4.195/kernel/sys.c | |
524 | +--- linux-5.4.199.orig/kernel/sys.c | |
525 | ++++ linux-5.4.199/kernel/sys.c | |
526 | 526 | @@ -204,6 +204,10 @@ SYSCALL_DEFINE3(setpriority, int, which, |
527 | 527 | |
528 | 528 | if (which > PRIO_USER || which < PRIO_PROCESS) |
@@ -552,8 +552,8 @@ | ||
552 | 552 | |
553 | 553 | errno = -EFAULT; |
554 | 554 | if (!copy_from_user(tmp, name, len)) { |
555 | ---- linux-5.4.195.orig/kernel/time/timekeeping.c | |
556 | -+++ linux-5.4.195/kernel/time/timekeeping.c | |
555 | +--- linux-5.4.199.orig/kernel/time/timekeeping.c | |
556 | ++++ linux-5.4.199/kernel/time/timekeeping.c | |
557 | 557 | @@ -22,6 +22,7 @@ |
558 | 558 | #include <linux/pvclock_gtod.h> |
559 | 559 | #include <linux/compiler.h> |
@@ -587,8 +587,8 @@ | ||
587 | 587 | |
588 | 588 | /* |
589 | 589 | * Validate if a timespec/timeval used to inject a time |
590 | ---- linux-5.4.195.orig/net/ipv4/raw.c | |
591 | -+++ linux-5.4.195/net/ipv4/raw.c | |
590 | +--- linux-5.4.199.orig/net/ipv4/raw.c | |
591 | ++++ linux-5.4.199/net/ipv4/raw.c | |
592 | 592 | @@ -770,6 +770,10 @@ static int raw_recvmsg(struct sock *sk, |
593 | 593 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
594 | 594 | if (!skb) |
@@ -600,8 +600,8 @@ | ||
600 | 600 | |
601 | 601 | copied = skb->len; |
602 | 602 | if (len < copied) { |
603 | ---- linux-5.4.195.orig/net/ipv4/udp.c | |
604 | -+++ linux-5.4.195/net/ipv4/udp.c | |
603 | +--- linux-5.4.199.orig/net/ipv4/udp.c | |
604 | ++++ linux-5.4.199/net/ipv4/udp.c | |
605 | 605 | @@ -1751,6 +1751,8 @@ try_again: |
606 | 606 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
607 | 607 | if (!skb) |
@@ -611,8 +611,8 @@ | ||
611 | 611 | |
612 | 612 | ulen = udp_skb_len(skb); |
613 | 613 | copied = len; |
614 | ---- linux-5.4.195.orig/net/ipv6/raw.c | |
615 | -+++ linux-5.4.195/net/ipv6/raw.c | |
614 | +--- linux-5.4.199.orig/net/ipv6/raw.c | |
615 | ++++ linux-5.4.199/net/ipv6/raw.c | |
616 | 616 | @@ -480,6 +480,10 @@ static int rawv6_recvmsg(struct sock *sk |
617 | 617 | skb = skb_recv_datagram(sk, flags, noblock, &err); |
618 | 618 | if (!skb) |
@@ -624,8 +624,8 @@ | ||
624 | 624 | |
625 | 625 | copied = skb->len; |
626 | 626 | if (copied > len) { |
627 | ---- linux-5.4.195.orig/net/ipv6/udp.c | |
628 | -+++ linux-5.4.195/net/ipv6/udp.c | |
627 | +--- linux-5.4.199.orig/net/ipv6/udp.c | |
628 | ++++ linux-5.4.199/net/ipv6/udp.c | |
629 | 629 | @@ -292,6 +292,8 @@ try_again: |
630 | 630 | skb = __skb_recv_udp(sk, flags, noblock, &off, &err); |
631 | 631 | if (!skb) |
@@ -635,8 +635,8 @@ | ||
635 | 635 | |
636 | 636 | ulen = udp6_skb_len(skb); |
637 | 637 | copied = len; |
638 | ---- linux-5.4.195.orig/net/socket.c | |
639 | -+++ linux-5.4.195/net/socket.c | |
638 | +--- linux-5.4.199.orig/net/socket.c | |
639 | ++++ linux-5.4.199/net/socket.c | |
640 | 640 | @@ -1744,6 +1744,10 @@ int __sys_accept4(int fd, struct sockadd |
641 | 641 | if (err < 0) |
642 | 642 | goto out_fd; |
@@ -648,8 +648,8 @@ | ||
648 | 648 | if (upeer_sockaddr) { |
649 | 649 | len = newsock->ops->getname(newsock, |
650 | 650 | (struct sockaddr *)&address, 2); |
651 | ---- linux-5.4.195.orig/net/unix/af_unix.c | |
652 | -+++ linux-5.4.195/net/unix/af_unix.c | |
651 | +--- linux-5.4.199.orig/net/unix/af_unix.c | |
652 | ++++ linux-5.4.199/net/unix/af_unix.c | |
653 | 653 | @@ -2164,6 +2164,10 @@ static int unix_dgram_recvmsg(struct soc |
654 | 654 | EPOLLOUT | EPOLLWRNORM | |
655 | 655 | EPOLLWRBAND); |
@@ -669,8 +669,8 @@ | ||
669 | 669 | mutex_unlock(&u->iolock); |
670 | 670 | out: |
671 | 671 | return err; |
672 | ---- linux-5.4.195.orig/security/Kconfig | |
673 | -+++ linux-5.4.195/security/Kconfig | |
672 | +--- linux-5.4.199.orig/security/Kconfig | |
673 | ++++ linux-5.4.199/security/Kconfig | |
674 | 674 | @@ -294,5 +294,7 @@ config LSM |
675 | 675 | |
676 | 676 | source "security/Kconfig.hardening" |
@@ -679,8 +679,8 @@ | ||
679 | 679 | + |
680 | 680 | endmenu |
681 | 681 | |
682 | ---- linux-5.4.195.orig/security/Makefile | |
683 | -+++ linux-5.4.195/security/Makefile | |
682 | +--- linux-5.4.199.orig/security/Makefile | |
683 | ++++ linux-5.4.199/security/Makefile | |
684 | 684 | @@ -34,3 +34,6 @@ obj-$(CONFIG_CGROUP_DEVICE) += device_c |
685 | 685 | # Object integrity file lists |
686 | 686 | subdir-$(CONFIG_INTEGRITY) += integrity |
@@ -688,8 +688,8 @@ | ||
688 | 688 | + |
689 | 689 | +subdir-$(CONFIG_CCSECURITY) += ccsecurity |
690 | 690 | +obj-$(CONFIG_CCSECURITY) += ccsecurity/ |
691 | ---- linux-5.4.195.orig/security/security.c | |
692 | -+++ linux-5.4.195/security/security.c | |
691 | +--- linux-5.4.199.orig/security/security.c | |
692 | ++++ linux-5.4.199/security/security.c | |
693 | 693 | @@ -1520,7 +1520,9 @@ int security_task_alloc(struct task_stru |
694 | 694 | |
695 | 695 | if (rc) |
@@ -10,12 +10,12 @@ | ||
10 | 10 | |
11 | 11 | cd /tmp/ || die "Can't chdir to /tmp/ ." |
12 | 12 | |
13 | -if [ ! -r kernel-4.18.0-383.el8.src.rpm ] | |
13 | +if [ ! -r kernel-4.18.0-394.el8.src.rpm ] | |
14 | 14 | then |
15 | - wget https://vault.centos.org/centos/8-stream/BaseOS/Source/SPackages/kernel-4.18.0-383.el8.src.rpm || die "Can't download source package." | |
15 | + wget https://vault.centos.org/centos/8-stream/BaseOS/Source/SPackages/kernel-4.18.0-394.el8.src.rpm || die "Can't download source package." | |
16 | 16 | fi |
17 | -LANG=C rpm --checksig kernel-4.18.0-383.el8.src.rpm | grep -F ': digests signatures OK' || die "Can't verify signature." | |
18 | -rpm -ivh kernel-4.18.0-383.el8.src.rpm || die "Can't install source package." | |
17 | +LANG=C rpm --checksig kernel-4.18.0-394.el8.src.rpm | grep -F ': digests signatures OK' || die "Can't verify signature." | |
18 | +rpm -ivh kernel-4.18.0-394.el8.src.rpm || die "Can't install source package." | |
19 | 19 | |
20 | 20 | cd ~/rpmbuild/SOURCES/ || die "Can't chdir to ~/rpmbuild/SOURCES/ ." |
21 | 21 | if [ ! -r caitsith-patch-0.2-20220512.tar.gz ] |
@@ -36,7 +36,7 @@ | ||
36 | 36 | +%define buildid _caitsith_0.2.10 |
37 | 37 | |
38 | 38 | %define rpmversion 4.18.0 |
39 | - %define pkgrelease 383.el8 | |
39 | + %define pkgrelease 394.el8 | |
40 | 40 | @@ -1102,6 +1102,10 @@ |
41 | 41 | |
42 | 42 | # END OF PATCH APPLICATIONS |
@@ -416,7 +416,8 @@ | ||
416 | 416 | goto out; |
417 | 417 | cp1 = "0 deny "; |
418 | 418 | write(fd_out, cp1, strlen(cp1)); |
419 | - if (!strcmp(testcases[i].action, "rmdir")) { | |
419 | + if (!strcmp(testcases[i].action, "unlink") || | |
420 | + !strcmp(testcases[i].action, "rmdir")) { | |
420 | 421 | char *cp3 = strstr(cp2, " path.ino="); |
421 | 422 | char *cp4 = cp3 ? strchr(cp3 + 1, ' ') : NULL; |
422 | 423 | if (cp4) |