Merge branch 'parisc-3.17-7' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc fixes from Helge Deller: "We avoid using -mfast-indirect-calls for 64bit kernel builds to prevent building an unbootable kernel due to latest gcc changes. In the pdc_stable/firmware-access driver we fix a few possible stack overflows and we now call secure_computing_strict() instead of secure_computing() which fixes upcoming SECCOMP patches in the for-next trees" * 'parisc-3.17-7' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: parisc: Only use -mfast-indirect-calls option for 32-bit kernel builds parisc: pdc_stable.c: Avoid potential stack overflows parisc: pdc_stable.c: Cleaning up unnecessary use of memset in conjunction with strncpy parisc: ptrace: use secure_computing_strict()
This commit is contained in:
commit
d19eff3acf
|
@ -48,7 +48,12 @@ cflags-y := -pipe
|
|||
|
||||
# These flags should be implied by an hppa-linux configuration, but they
|
||||
# are not in gcc 3.2.
|
||||
cflags-y += -mno-space-regs -mfast-indirect-calls
|
||||
cflags-y += -mno-space-regs
|
||||
|
||||
# -mfast-indirect-calls is only relevant for 32-bit kernels.
|
||||
ifndef CONFIG_64BIT
|
||||
cflags-y += -mfast-indirect-calls
|
||||
endif
|
||||
|
||||
# Currently we save and restore fpregs on all kernel entry/interruption paths.
|
||||
# If that gets optimized, we might need to disable the use of fpregs in the
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <linux/user.h>
|
||||
#include <linux/personality.h>
|
||||
#include <linux/security.h>
|
||||
#include <linux/seccomp.h>
|
||||
#include <linux/compat.h>
|
||||
#include <linux/signal.h>
|
||||
#include <linux/audit.h>
|
||||
|
@ -271,10 +272,7 @@ long do_syscall_trace_enter(struct pt_regs *regs)
|
|||
long ret = 0;
|
||||
|
||||
/* Do the secure computing check first. */
|
||||
if (secure_computing(regs->gr[20])) {
|
||||
/* seccomp failures shouldn't expose any additional code. */
|
||||
return -1;
|
||||
}
|
||||
secure_computing_strict(regs->gr[20]);
|
||||
|
||||
if (test_thread_flag(TIF_SYSCALL_TRACE) &&
|
||||
tracehook_report_syscall_entry(regs))
|
||||
|
|
|
@ -278,7 +278,7 @@ pdcspath_hwpath_write(struct pdcspath_entry *entry, const char *buf, size_t coun
|
|||
{
|
||||
struct hardware_path hwpath;
|
||||
unsigned short i;
|
||||
char in[count+1], *temp;
|
||||
char in[64], *temp;
|
||||
struct device *dev;
|
||||
int ret;
|
||||
|
||||
|
@ -286,8 +286,9 @@ pdcspath_hwpath_write(struct pdcspath_entry *entry, const char *buf, size_t coun
|
|||
return -EINVAL;
|
||||
|
||||
/* We'll use a local copy of buf */
|
||||
memset(in, 0, count+1);
|
||||
count = min_t(size_t, count, sizeof(in)-1);
|
||||
strncpy(in, buf, count);
|
||||
in[count] = '\0';
|
||||
|
||||
/* Let's clean up the target. 0xff is a blank pattern */
|
||||
memset(&hwpath, 0xff, sizeof(hwpath));
|
||||
|
@ -393,14 +394,15 @@ pdcspath_layer_write(struct pdcspath_entry *entry, const char *buf, size_t count
|
|||
{
|
||||
unsigned int layers[6]; /* device-specific info (ctlr#, unit#, ...) */
|
||||
unsigned short i;
|
||||
char in[count+1], *temp;
|
||||
char in[64], *temp;
|
||||
|
||||
if (!entry || !buf || !count)
|
||||
return -EINVAL;
|
||||
|
||||
/* We'll use a local copy of buf */
|
||||
memset(in, 0, count+1);
|
||||
count = min_t(size_t, count, sizeof(in)-1);
|
||||
strncpy(in, buf, count);
|
||||
in[count] = '\0';
|
||||
|
||||
/* Let's clean up the target. 0 is a blank pattern */
|
||||
memset(&layers, 0, sizeof(layers));
|
||||
|
@ -755,7 +757,7 @@ static ssize_t pdcs_auto_write(struct kobject *kobj,
|
|||
{
|
||||
struct pdcspath_entry *pathentry;
|
||||
unsigned char flags;
|
||||
char in[count+1], *temp;
|
||||
char in[8], *temp;
|
||||
char c;
|
||||
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
|
@ -765,8 +767,9 @@ static ssize_t pdcs_auto_write(struct kobject *kobj,
|
|||
return -EINVAL;
|
||||
|
||||
/* We'll use a local copy of buf */
|
||||
memset(in, 0, count+1);
|
||||
count = min_t(size_t, count, sizeof(in)-1);
|
||||
strncpy(in, buf, count);
|
||||
in[count] = '\0';
|
||||
|
||||
/* Current flags are stored in primary boot path entry */
|
||||
pathentry = &pdcspath_entry_primary;
|
||||
|
|
Loading…
Reference in New Issue