git: de67d174a10c - stable/13 - linux(4): Export the AT_RANDOM depending on the process osreldata

From: Dmitry Chagin <dchagin_at_FreeBSD.org>
Date: Thu, 29 Jun 2023 08:20:05 UTC
The branch stable/13 has been updated by dchagin:

URL: https://cgit.FreeBSD.org/src/commit/?id=de67d174a10c296e6d44499d0c577cd0e9d048ef

commit de67d174a10c296e6d44499d0c577cd0e9d048ef
Author:     Dmitry Chagin <dchagin@FreeBSD.org>
AuthorDate: 2023-04-22 19:17:17 +0000
Commit:     Dmitry Chagin <dchagin@FreeBSD.org>
CommitDate: 2023-06-29 08:15:26 +0000

    linux(4): Export the AT_RANDOM depending on the process osreldata
    
    AT_RANDOM has appeared in the 2.6.30 Linux kernel first time.
    
    Reviewed by:            emaste
    Differential Revision:  https://reviews.freebsd.org/D39646
    MFC after:              1 month
    
    (cherry picked from commit 40c36c4674eb9602709cf9d0483a4f34ad9753f6)
---
 sys/compat/linux/linux_elf.c | 3 ++-
 sys/compat/linux/linux_mib.h | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/sys/compat/linux/linux_elf.c b/sys/compat/linux/linux_elf.c
index 9b2c38aba444..d0e547c1b882 100644
--- a/sys/compat/linux/linux_elf.c
+++ b/sys/compat/linux/linux_elf.c
@@ -526,7 +526,8 @@ __linuxN(copyout_auxargs)(struct image_params *imgp, uintptr_t base)
 	AUXARGS_ENTRY(pos, AT_GID, imgp->proc->p_ucred->cr_rgid);
 	AUXARGS_ENTRY(pos, AT_EGID, imgp->proc->p_ucred->cr_svgid);
 	AUXARGS_ENTRY(pos, LINUX_AT_SECURE, issetugid);
-	AUXARGS_ENTRY_PTR(pos, LINUX_AT_RANDOM, imgp->canary);
+	if (p->p_osrel >= LINUX_KERNVER_2006030 || p->p_osrel == 0)
+		AUXARGS_ENTRY_PTR(pos, LINUX_AT_RANDOM, imgp->canary);
 	if (imgp->execpathp != 0)
 		AUXARGS_ENTRY(pos, LINUX_AT_EXECFN, PTROUT(imgp->execpathp));
 	if (args->execfd != -1)
diff --git a/sys/compat/linux/linux_mib.h b/sys/compat/linux/linux_mib.h
index 615439b4d107..b1d5a0981a7d 100644
--- a/sys/compat/linux/linux_mib.h
+++ b/sys/compat/linux/linux_mib.h
@@ -58,6 +58,7 @@ int	linux_kernver(struct thread *td);
 #define	LINUX_VERSION_STR	LINUX_XKERNVERSTR(LINUX_KVERSION.LINUX_KPATCHLEVEL.LINUX_KSUBLEVEL)
 
 #define	LINUX_KERNVER_2004000	LINUX_KERNVER(2,4,0)
+#define	LINUX_KERNVER_2006030	LINUX_KERNVER(2,6,30)
 #define	LINUX_KERNVER_2006039	LINUX_KERNVER(2,6,39)
 #define	LINUX_KERNVER_5004000	LINUX_KERNVER(5,4,0)