Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
@@ -18,8 +18,8 @@ ssize_t security_show(struct device *dev,
|
||||
* For the test version we need to poll the "hardware" in order
|
||||
* to get the updated status for unlock testing.
|
||||
*/
|
||||
nvdimm->sec.state = nvdimm_security_state(nvdimm, false);
|
||||
nvdimm->sec.ext_state = nvdimm_security_state(nvdimm, true);
|
||||
nvdimm->sec.state = nvdimm_security_state(nvdimm, NVDIMM_USER);
|
||||
nvdimm->sec.ext_state = nvdimm_security_state(nvdimm, NVDIMM_MASTER);
|
||||
|
||||
switch (nvdimm->sec.state) {
|
||||
case NVDIMM_SECURITY_DISABLED:
|
||||
|
@@ -37,7 +37,7 @@ static int get_debugfs(char **path)
|
||||
struct libmnt_table *tb;
|
||||
struct libmnt_iter *itr = NULL;
|
||||
struct libmnt_fs *fs;
|
||||
int found = 0;
|
||||
int found = 0, ret;
|
||||
|
||||
cxt = mnt_new_context();
|
||||
if (!cxt)
|
||||
@@ -58,8 +58,11 @@ static int get_debugfs(char **path)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found)
|
||||
asprintf(path, "%s/gpio", mnt_fs_get_target(fs));
|
||||
if (found) {
|
||||
ret = asprintf(path, "%s/gpio", mnt_fs_get_target(fs));
|
||||
if (ret < 0)
|
||||
err(EXIT_FAILURE, "failed to format string");
|
||||
}
|
||||
|
||||
mnt_free_iter(itr);
|
||||
mnt_free_context(cxt);
|
||||
|
@@ -571,7 +571,7 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm,
|
||||
* already exist.
|
||||
*/
|
||||
region = (struct userspace_mem_region *) userspace_mem_region_find(
|
||||
vm, guest_paddr, guest_paddr + npages * vm->page_size);
|
||||
vm, guest_paddr, (guest_paddr + npages * vm->page_size) - 1);
|
||||
if (region != NULL)
|
||||
TEST_ASSERT(false, "overlapping userspace_mem_region already "
|
||||
"exists\n"
|
||||
@@ -587,15 +587,10 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm,
|
||||
region = region->next) {
|
||||
if (region->region.slot == slot)
|
||||
break;
|
||||
if ((guest_paddr <= (region->region.guest_phys_addr
|
||||
+ region->region.memory_size))
|
||||
&& ((guest_paddr + npages * vm->page_size)
|
||||
>= region->region.guest_phys_addr))
|
||||
break;
|
||||
}
|
||||
if (region != NULL)
|
||||
TEST_ASSERT(false, "A mem region with the requested slot "
|
||||
"or overlapping physical memory range already exists.\n"
|
||||
"already exists.\n"
|
||||
" requested slot: %u paddr: 0x%lx npages: 0x%lx\n"
|
||||
" existing slot: %u paddr: 0x%lx size: 0x%lx",
|
||||
slot, guest_paddr, npages,
|
||||
|
@@ -103,6 +103,12 @@ int main(int argc, char *argv[])
|
||||
|
||||
vcpu_ioctl(vm, VCPU_ID, KVM_ENABLE_CAP, &enable_evmcs_cap);
|
||||
|
||||
/* KVM should return supported EVMCS version range */
|
||||
TEST_ASSERT(((evmcs_ver >> 8) >= (evmcs_ver & 0xff)) &&
|
||||
(evmcs_ver & 0xff) > 0,
|
||||
"Incorrect EVMCS version range: %x:%x\n",
|
||||
evmcs_ver & 0xff, evmcs_ver >> 8);
|
||||
|
||||
run = vcpu_state(vm, VCPU_ID);
|
||||
|
||||
vcpu_regs_get(vm, VCPU_ID, ®s1);
|
||||
|
@@ -145,15 +145,12 @@ TEST_F(rtc, alarm_alm_set) {
|
||||
|
||||
rc = select(self->fd + 1, &readfds, NULL, NULL, &tv);
|
||||
ASSERT_NE(-1, rc);
|
||||
EXPECT_NE(0, rc);
|
||||
ASSERT_NE(0, rc);
|
||||
|
||||
/* Disable alarm interrupts */
|
||||
rc = ioctl(self->fd, RTC_AIE_OFF, 0);
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
if (rc == 0)
|
||||
return;
|
||||
|
||||
rc = read(self->fd, &data, sizeof(unsigned long));
|
||||
ASSERT_NE(-1, rc);
|
||||
TH_LOG("data: %lx", data);
|
||||
@@ -202,7 +199,109 @@ TEST_F(rtc, alarm_wkalm_set) {
|
||||
|
||||
rc = select(self->fd + 1, &readfds, NULL, NULL, &tv);
|
||||
ASSERT_NE(-1, rc);
|
||||
EXPECT_NE(0, rc);
|
||||
ASSERT_NE(0, rc);
|
||||
|
||||
rc = read(self->fd, &data, sizeof(unsigned long));
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
rc = ioctl(self->fd, RTC_RD_TIME, &tm);
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
new = timegm((struct tm *)&tm);
|
||||
ASSERT_EQ(new, secs);
|
||||
}
|
||||
|
||||
TEST_F(rtc, alarm_alm_set_minute) {
|
||||
struct timeval tv = { .tv_sec = 62 };
|
||||
unsigned long data;
|
||||
struct rtc_time tm;
|
||||
fd_set readfds;
|
||||
time_t secs, new;
|
||||
int rc;
|
||||
|
||||
rc = ioctl(self->fd, RTC_RD_TIME, &tm);
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
secs = timegm((struct tm *)&tm) + 60 - tm.tm_sec;
|
||||
gmtime_r(&secs, (struct tm *)&tm);
|
||||
|
||||
rc = ioctl(self->fd, RTC_ALM_SET, &tm);
|
||||
if (rc == -1) {
|
||||
ASSERT_EQ(EINVAL, errno);
|
||||
TH_LOG("skip alarms are not supported.");
|
||||
return;
|
||||
}
|
||||
|
||||
rc = ioctl(self->fd, RTC_ALM_READ, &tm);
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
TH_LOG("Alarm time now set to %02d:%02d:%02d.",
|
||||
tm.tm_hour, tm.tm_min, tm.tm_sec);
|
||||
|
||||
/* Enable alarm interrupts */
|
||||
rc = ioctl(self->fd, RTC_AIE_ON, 0);
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
FD_ZERO(&readfds);
|
||||
FD_SET(self->fd, &readfds);
|
||||
|
||||
rc = select(self->fd + 1, &readfds, NULL, NULL, &tv);
|
||||
ASSERT_NE(-1, rc);
|
||||
ASSERT_NE(0, rc);
|
||||
|
||||
/* Disable alarm interrupts */
|
||||
rc = ioctl(self->fd, RTC_AIE_OFF, 0);
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
rc = read(self->fd, &data, sizeof(unsigned long));
|
||||
ASSERT_NE(-1, rc);
|
||||
TH_LOG("data: %lx", data);
|
||||
|
||||
rc = ioctl(self->fd, RTC_RD_TIME, &tm);
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
new = timegm((struct tm *)&tm);
|
||||
ASSERT_EQ(new, secs);
|
||||
}
|
||||
|
||||
TEST_F(rtc, alarm_wkalm_set_minute) {
|
||||
struct timeval tv = { .tv_sec = 62 };
|
||||
struct rtc_wkalrm alarm = { 0 };
|
||||
struct rtc_time tm;
|
||||
unsigned long data;
|
||||
fd_set readfds;
|
||||
time_t secs, new;
|
||||
int rc;
|
||||
|
||||
rc = ioctl(self->fd, RTC_RD_TIME, &alarm.time);
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
secs = timegm((struct tm *)&alarm.time) + 60 - alarm.time.tm_sec;
|
||||
gmtime_r(&secs, (struct tm *)&alarm.time);
|
||||
|
||||
alarm.enabled = 1;
|
||||
|
||||
rc = ioctl(self->fd, RTC_WKALM_SET, &alarm);
|
||||
if (rc == -1) {
|
||||
ASSERT_EQ(EINVAL, errno);
|
||||
TH_LOG("skip alarms are not supported.");
|
||||
return;
|
||||
}
|
||||
|
||||
rc = ioctl(self->fd, RTC_WKALM_RD, &alarm);
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
TH_LOG("Alarm time now set to %02d/%02d/%02d %02d:%02d:%02d.",
|
||||
alarm.time.tm_mday, alarm.time.tm_mon + 1,
|
||||
alarm.time.tm_year + 1900, alarm.time.tm_hour,
|
||||
alarm.time.tm_min, alarm.time.tm_sec);
|
||||
|
||||
FD_ZERO(&readfds);
|
||||
FD_SET(self->fd, &readfds);
|
||||
|
||||
rc = select(self->fd + 1, &readfds, NULL, NULL, &tv);
|
||||
ASSERT_NE(-1, rc);
|
||||
ASSERT_NE(0, rc);
|
||||
|
||||
rc = read(self->fd, &data, sizeof(unsigned long));
|
||||
ASSERT_NE(-1, rc);
|
||||
|
@@ -9,7 +9,7 @@ BINARIES := seccomp_bpf seccomp_benchmark
|
||||
CFLAGS += -Wl,-no-as-needed -Wall
|
||||
|
||||
seccomp_bpf: seccomp_bpf.c ../kselftest_harness.h
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -lpthread $< -o $@
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $< -lpthread -o $@
|
||||
|
||||
TEST_PROGS += $(BINARIES)
|
||||
EXTRA_CLEAN := $(BINARIES)
|
||||
|
@@ -3044,7 +3044,7 @@ TEST(user_notification_basic)
|
||||
/* Check that the basic notification machinery works */
|
||||
listener = user_trap_syscall(__NR_getpid,
|
||||
SECCOMP_FILTER_FLAG_NEW_LISTENER);
|
||||
EXPECT_GE(listener, 0);
|
||||
ASSERT_GE(listener, 0);
|
||||
|
||||
/* Installing a second listener in the chain should EBUSY */
|
||||
EXPECT_EQ(user_trap_syscall(__NR_getpid,
|
||||
@@ -3103,7 +3103,7 @@ TEST(user_notification_kill_in_middle)
|
||||
|
||||
listener = user_trap_syscall(__NR_getpid,
|
||||
SECCOMP_FILTER_FLAG_NEW_LISTENER);
|
||||
EXPECT_GE(listener, 0);
|
||||
ASSERT_GE(listener, 0);
|
||||
|
||||
/*
|
||||
* Check that nothing bad happens when we kill the task in the middle
|
||||
@@ -3152,7 +3152,7 @@ TEST(user_notification_signal)
|
||||
|
||||
listener = user_trap_syscall(__NR_gettid,
|
||||
SECCOMP_FILTER_FLAG_NEW_LISTENER);
|
||||
EXPECT_GE(listener, 0);
|
||||
ASSERT_GE(listener, 0);
|
||||
|
||||
pid = fork();
|
||||
ASSERT_GE(pid, 0);
|
||||
@@ -3215,7 +3215,7 @@ TEST(user_notification_closed_listener)
|
||||
|
||||
listener = user_trap_syscall(__NR_getpid,
|
||||
SECCOMP_FILTER_FLAG_NEW_LISTENER);
|
||||
EXPECT_GE(listener, 0);
|
||||
ASSERT_GE(listener, 0);
|
||||
|
||||
/*
|
||||
* Check that we get an ENOSYS when the listener is closed.
|
||||
@@ -3376,7 +3376,7 @@ TEST(seccomp_get_notif_sizes)
|
||||
{
|
||||
struct seccomp_notif_sizes sizes;
|
||||
|
||||
EXPECT_EQ(seccomp(SECCOMP_GET_NOTIF_SIZES, 0, &sizes), 0);
|
||||
ASSERT_EQ(seccomp(SECCOMP_GET_NOTIF_SIZES, 0, &sizes), 0);
|
||||
EXPECT_EQ(sizes.seccomp_notif, sizeof(struct seccomp_notif));
|
||||
EXPECT_EQ(sizes.seccomp_notif_resp, sizeof(struct seccomp_notif_resp));
|
||||
}
|
||||
|
@@ -25,6 +25,7 @@ struct gup_benchmark {
|
||||
__u64 size;
|
||||
__u32 nr_pages_per_call;
|
||||
__u32 flags;
|
||||
__u64 expansion[10]; /* For future use */
|
||||
};
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
@@ -1503,7 +1503,7 @@ exit:
|
||||
exit(20);
|
||||
}
|
||||
if (successes != total_nr_tests) {
|
||||
eprintf("ERROR: succeded fewer than number of tries (%d != %d)\n",
|
||||
eprintf("ERROR: succeeded fewer than number of tries (%d != %d)\n",
|
||||
successes, total_nr_tests);
|
||||
exit(21);
|
||||
}
|
||||
|
@@ -44,7 +44,6 @@ int main()
|
||||
#include <stdbool.h>
|
||||
#include <sys/ptrace.h>
|
||||
#include <sys/user.h>
|
||||
#include <sys/ucontext.h>
|
||||
#include <link.h>
|
||||
#include <sys/auxv.h>
|
||||
#include <dlfcn.h>
|
||||
|
Reference in New Issue
Block a user