alpha: introduce field 'taso' into struct linux_binprm

This change is Alpha-specific.  It adds field 'taso' into struct
linux_binprm to remember if the application is TASO.  Previously, field
sh_bang was used for this purpose.

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Pavel Emelyanov <xemul@openvz.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Kirill A. Shutemov 2008-10-15 22:02:37 -07:00 committed by Linus Torvalds
parent cde162c2a9
commit 53112488be
3 changed files with 5 additions and 2 deletions

View file

@ -95,7 +95,7 @@ struct exec
Worse, we have to notice the start address before swapping to use Worse, we have to notice the start address before swapping to use
/sbin/loader, which of course is _not_ a TASO application. */ /sbin/loader, which of course is _not_ a TASO application. */
#define SET_AOUT_PERSONALITY(BFPM, EX) \ #define SET_AOUT_PERSONALITY(BFPM, EX) \
set_personality (((BFPM->sh_bang || EX.ah.entry < 0x100000000L \ set_personality (((BFPM->taso || EX.ah.entry < 0x100000000L \
? ADDR_LIMIT_32BIT : 0) | PER_OSF4)) ? ADDR_LIMIT_32BIT : 0) | PER_OSF4))
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */

View file

@ -1189,7 +1189,7 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)
return retval; return retval;
/* Remember if the application is TASO. */ /* Remember if the application is TASO. */
bprm->sh_bang = eh->ah.entry < 0x100000000UL; bprm->taso = eh->ah.entry < 0x100000000UL;
bprm->file = file; bprm->file = file;
bprm->loader = loader; bprm->loader = loader;

View file

@ -36,6 +36,9 @@ struct linux_binprm{
unsigned long p; /* current top of mem */ unsigned long p; /* current top of mem */
unsigned int sh_bang:1, unsigned int sh_bang:1,
misc_bang:1; misc_bang:1;
#ifdef __alpha__
unsigned int taso:1;
#endif
struct file * file; struct file * file;
int e_uid, e_gid; int e_uid, e_gid;
kernel_cap_t cap_post_exec_permitted; kernel_cap_t cap_post_exec_permitted;