From: Rishi k. K R. <ris...@li...> - 2010-03-15 06:24:18
|
The branch, maint, has been updated via 965127e99f1c3e4035a3de621ca0c295de14448b (commit) via 0a52859d55cf93cdd310ec678868cb4d10e80728 (commit) via d05498f44de5d3e542b2031b458d84e907604728 (commit) via 615e1e37de053855b6bd56bae8b00d8a17133f8a (commit) from 2784e9a6e36cacad4192f41a8c9044a85428ed27 (commit) - Log ----------------------------------------------------------------- commit 965127e99f1c3e4035a3de621ca0c295de14448b Merge: 2784e9a6e36cacad4192f41a8c9044a85428ed27 0a52859d55cf93cdd310ec678868cb4d10e80728 Author: Rishikesh K Rajak <ris...@li...> Date: Mon Mar 15 11:53:31 2010 +0530 Merge branches 'pu' and 'maint' into maint commit 0a52859d55cf93cdd310ec678868cb4d10e80728 Author: Rishikesh K Rajak <ris...@li...> Date: Mon Mar 15 11:50:53 2010 +0530 Adding a wordy informationi, 2005 here represents as year not version of kernels. Though we need to work on this testcase to provide under TCONF. Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: testcases/network/multicast/mc_cmds/mc_cmds | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/testcases/network/multicast/mc_cmds/mc_cmds b/testcases/network/multicast/mc_cmds/mc_cmds index d537103..f43dd95 100755 --- a/testcases/network/multicast/mc_cmds/mc_cmds +++ b/testcases/network/multicast/mc_cmds/mc_cmds @@ -127,7 +127,7 @@ for eth in $IFNAME cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts | grep 1 > /dev/null if [ $? -eq 0 ] then - end_testcase "Multicast ping disabled on this system (this is normal on post 2005 kernels)" + end_testcase "Multicast ping disabled on this system (this is normal on post year:2005 kernels)" fi # Do the ping tests: Execute ping 224.0.0.1 - Verify that the proper hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-22 05:14:24
|
The branch, next, has been updated via 4d574b9f3c82a58d88b97e201ac49cddf7bc5c24 (commit) via e7ed287c04bef2108fa544b0b86629e554403970 (commit) from b80fdefbd1843484e5a3ccc3d5748fee5b4cd1f7 (commit) - Log ----------------------------------------------------------------- commit 4d574b9f3c82a58d88b97e201ac49cddf7bc5c24 Merge: e7ed287c04bef2108fa544b0b86629e554403970 b80fdefbd1843484e5a3ccc3d5748fee5b4cd1f7 Author: Rishikesh K Rajak <ris...@li...> Date: Mon Mar 22 10:43:41 2010 +0530 Merge branch 'next' of ssh://ltp.git.sourceforge.net/gitroot/ltp/ltp-dev into next commit e7ed287c04bef2108fa544b0b86629e554403970 Author: Rishikesh K Rajak <ris...@li...> Date: Mon Mar 22 10:42:05 2010 +0530 This commit contains Linux RTC device driver test cases. Currently RTC read test, Alarm test and Update interrupts tests are supported. Tested-by: Rishikesh K Rajak <ris...@li...> Signed-off-by: Silesh C V <Sil...@ln...> ----------------------------------------------------------------------- Summary of changes: .../rtc}/Makefile | 16 +- testcases/kernel/device-drivers/rtc/README | 29 +++ testcases/kernel/device-drivers/rtc/rtc-test.c | 218 ++++++++++++++++++++ 3 files changed, 257 insertions(+), 6 deletions(-) copy testcases/kernel/{syscalls/clock_nanosleep => device-drivers/rtc}/Makefile (73%) create mode 100644 testcases/kernel/device-drivers/rtc/README create mode 100644 testcases/kernel/device-drivers/rtc/rtc-test.c diff --git a/testcases/kernel/syscalls/clock_nanosleep/Makefile b/testcases/kernel/device-drivers/rtc/Makefile similarity index 73% copy from testcases/kernel/syscalls/clock_nanosleep/Makefile copy to testcases/kernel/device-drivers/rtc/Makefile index 71ebae9..9b776ca 100644 --- a/testcases/kernel/syscalls/clock_nanosleep/Makefile +++ b/testcases/kernel/device-drivers/rtc/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) International Business Machines Corp., 2009 +# Copyright (c) Larsen & Toubro Infotech Ltd., 2010 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,13 +13,17 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# # -top_srcdir ?= ../../../.. +CFLAGS = -O2 -Wall -I ../../../../include/ +LIBS = -L ../../../../lib/ -lltp +SRC = rtc-test.c -include $(top_srcdir)/include/mk/testcases.mk -LDLIBS += -lpthread -lrt +all: $(SRC) + $(CC) $(SRC) $(CFLAGS) $(LIBS) -o rtc-test -include $(top_srcdir)/include/mk/generic_leaf_target.mk +clean: + rm -f rtc-test diff --git a/testcases/kernel/device-drivers/rtc/README b/testcases/kernel/device-drivers/rtc/README new file mode 100644 index 0000000..3094aa7 --- /dev/null +++ b/testcases/kernel/device-drivers/rtc/README @@ -0,0 +1,29 @@ +rtc-test.c : Test the Real Time Clock driver + +Tests supported as of now +-------------------------- +1. Read test : This reads the time/date from the RTC + ioctls tested :- RTC_RD_TIME. + +2. Alarm Test: Sets the alarm to 5 seconds in future and makes sure it rings. + ioctls tested :- RTC_ALM_SET, RTC_ALM_READ, RTC_AIE_ON, RTC_AIE_OFF. + +3. Update interrupts test : Sets Update interrupts enable on, waits for five + interrupts and then turns it off. + ioctls tested :- RTC_UIE_ON, RTC_UIE_OFF. + + +How to Build +------------ +You have to build the complete LTP package before trying to build these tests. +After building the complete LTP sources enter this directory and issue a 'make'. + +How to Run +---------- + + The tests assume the rtc device node to be "/dev/rtc". If you have a +different node run the test with the name of the node as a parameter. + +Eg. If your node is /dev/rtc0, then run the test as + + $ ./rtc-test /dev/rtc0 diff --git a/testcases/kernel/device-drivers/rtc/rtc-test.c b/testcases/kernel/device-drivers/rtc/rtc-test.c new file mode 100644 index 0000000..a62b033 --- /dev/null +++ b/testcases/kernel/device-drivers/rtc/rtc-test.c @@ -0,0 +1,218 @@ +/* rtc-test.c + * + * Tests for the Real Time Clock driver. + * + * Copyright (c) Larsen & Toubro Infotech Ltd., 2010 + * + * Author : Silesh C V <Sil...@ln...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "test.h" +#include <sys/ioctl.h> +#include <stdio.h> +#include <stdlib.h> +#include <fcntl.h> +#include <unistd.h> +#include <linux/rtc.h> +#include <errno.h> +#include <time.h> + +int rtc_fd = -1; +char *TCID = "rtc01"; +int TST_TOTAL = 3; + + +/* Read and Alarm Tests : Read test reads the Date/time from RTC + * while Alarm test, sets the alarm to 5 seconds in future and + * waits for it to ring.The ioctls tested in these tests are + * RTC_RD_TIME, RTC_ALM_SET, RTC_ALM_READ, RTC_AIE_OFF */ + +void read_alarm_test(void) +{ + struct rtc_time rtc_tm; + int ret; + unsigned long data; + fd_set rfds; + struct timeval tv; + + tst_resm(TINFO, "RTC READ TEST:"); + + /*Read RTC Time*/ + ret = ioctl(rtc_fd, RTC_RD_TIME, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_RD_TIME ioctl failed"); + return; + } + + tst_resm(TPASS, "RTC READ TEST Passed"); + + tst_resm(TINFO, "Current RTC date/time is %d-%d-%d, %02d:%02d:%02d.", + rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900, + rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); + + tst_resm(TINFO, "RTC ALARM TEST :"); + + /*set Alarm to 5 Seconds*/ + rtc_tm.tm_sec += 5; + if (rtc_tm.tm_sec >= 60) { + rtc_tm.tm_sec %= 60; + rtc_tm.tm_min++; + } + + if (rtc_tm.tm_min == 60) { + rtc_tm.tm_min = 0; + rtc_tm.tm_hour++; + } + + if (rtc_tm.tm_hour == 24) + rtc_tm.tm_hour = 0; + + ret = ioctl(rtc_fd, RTC_ALM_SET, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_ALM_SET ioctl failed"); + return; + } + + /*Read current alarm time*/ + ret = ioctl(rtc_fd, RTC_ALM_READ, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_ALM_READ ioctl failed"); + return; + } + + tst_resm(TINFO, "Alarm time set to %02d:%02d:%02d.", + rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); + /* Enable alarm interrupts */ + ret = ioctl(rtc_fd, RTC_AIE_ON, 0); + if (ret == -1) { + tst_resm(TINFO, "RTC_AIE_ON ioctl failed"); + return; + } + + tst_resm(TINFO, "Waiting 5 seconds for the alarm..."); + + tv.tv_sec = 6;/*set 6 seconds as the time out*/ + tv.tv_usec = 0; + + FD_ZERO(&rfds); + FD_SET(rtc_fd, &rfds); + + ret = select(rtc_fd + 1, &rfds, NULL, NULL, &tv);/*wait for alarm*/ + + if (ret == -1) { + tst_resm(TFAIL, "select failed"); + return; + } else if (ret) { + ret = read(rtc_fd, &data, sizeof(unsigned long)); + if (ret == -1) { + tst_resm(TFAIL, "read failed"); + return; + } + tst_resm(TINFO, "Alarm rang."); + } else { + tst_resm(TFAIL, "Timed out waiting for the alarm"); + return; + } + + /* Disable alarm interrupts */ + ret = ioctl(rtc_fd, RTC_AIE_OFF, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_AIE_OFF ioctl failed"); + return; + } + tst_resm(TPASS, "RTC ALARM TEST Passed"); +} + +/* Update_interrupts_test :Once the Update interrupts is enabled, + * the RTC gives interrupts (1/sec) on the interrupts line(if the rtc + * has one). This is tested by enabling the update interrupts + * and then waiting for 5 interrupts.*/ + +void update_interrupts_test(void) +{ + int ret, i; + unsigned long data; + fd_set rfds; + struct timeval tv; + + tst_resm(TINFO, "RTC UPDATE INTERRUPTS TEST :"); + /*Turn on update interrupts*/ + ret = ioctl(rtc_fd, RTC_UIE_ON, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_UIE_ON ioctl failed"); + return; + } + + tst_resm(TINFO, "Waiting for 5 update interrupts..."); + for (i = 1; i < 6; i++) { + + tv.tv_sec = 2; /*2 sec time out for each interrupt*/ + tv.tv_usec = 0; + + FD_ZERO(&rfds); + FD_SET(rtc_fd, &rfds); + + ret = select(rtc_fd + 1, &rfds, NULL, NULL, &tv); + if (ret == -1) { + tst_resm(TFAIL, "select failed"); + return; + } else if (ret) { + ret = read(rtc_fd, &data, sizeof(unsigned long)); + if (ret == -1) { + tst_resm(TFAIL, "read failed"); + return; + } + tst_resm(TINFO, "Update interrupt %d", i); + } else { + tst_resm(TFAIL, + "Timed out waiting for the update interrupt"); + return; + } + } + + /* Turn off update interrupts */ + ret = ioctl(rtc_fd, RTC_UIE_OFF, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_UIE_OFF ioctl failed"); + return; + } + tst_resm(TPASS, "RTC UPDATE INTERRUPTS TEST Passed"); +} + +int main(int argc, char **argv) +{ + char *rtc_dev = "/dev/rtc"; + + if (argc == 2) + rtc_dev = argv[1]; + + rtc_fd = open(rtc_dev, O_RDONLY); + + if (rtc_fd < 0) + tst_brkm(TBROK | TERRNO, tst_exit, "couldn't open %s", rtc_dev); + + /*Read and alarm tests*/ + read_alarm_test(); + + /*Update interrupts test*/ + update_interrupts_test(); + + close(rtc_fd); + + tst_resm(TINFO, "RTC Tests Done!"); + return 0; +} hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-22 05:49:02
|
The branch, next, has been updated via c700433fe26d24b975bf241668a9701548e6c21d (commit) from 4d574b9f3c82a58d88b97e201ac49cddf7bc5c24 (commit) - Log ----------------------------------------------------------------- commit c700433fe26d24b975bf241668a9701548e6c21d Author: Rishikesh K Rajak <ris...@li...> Date: Mon Mar 22 11:16:51 2010 +0530 Attached patch fixes possible buffer oveflow in sem_getvalue tests (the buffer overflow happens when getpid() returns number that couldn't fit into buffer) and also cleans coding style. Signed-off-by: Cyril Hrubis ch...@su... Acked-by: Garrett Cooper <yan...@gm...> Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: .../conformance/interfaces/sem_getvalue/1-1.c | 21 +++---- .../conformance/interfaces/sem_getvalue/2-1.c | 19 +++--- .../conformance/interfaces/sem_getvalue/2-2.c | 59 ++++++++------------ .../conformance/interfaces/sem_getvalue/4-1.c | 18 +++--- .../conformance/interfaces/sem_getvalue/5-1.c | 23 ++++---- 5 files changed, 61 insertions(+), 79 deletions(-) diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c index 767f1b0..c0746c0 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c @@ -10,9 +10,7 @@ * This test case will call sem_getvalue to update the location referenced * by the semaphpre without effecting the state of the semaphore. The * updated value represents the actual semaphore value when it was called. -*/ - - + */ #include <stdio.h> #include <errno.h> @@ -20,29 +18,29 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "1-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } @@ -50,7 +48,8 @@ int main() { /* printf("Current value is: %d\n", val); */ - if (val == 1 ) { + + if (val == 1) { puts("TEST PASSED"); sem_close(mysemp); sem_unlink(semname); diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c index ac19af8..06814fb 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c @@ -8,8 +8,7 @@ /* * When semaphore is locked, then the value returned by sem_getvalue is zero. -*/ - + */ #include <stdio.h> #include <errno.h> @@ -17,35 +16,35 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "2-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } /* Lock Semaphore */ - if (sem_trywait(mysemp) == -1 ) { + if (sem_trywait(mysemp) == -1) { perror(ERROR_PREFIX "trywait"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) < 0 ) { + if (sem_getvalue(mysemp, &val) < 0) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c index 5918ceb..9989e48 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c @@ -83,18 +83,15 @@ /*************************** Test case ***********************************/ /******************************************************************************/ -void * threaded ( void * arg ) +void *threaded(void * arg) { int ret; - do - { + do { ret = sem_wait( arg ); - } - while ( ( ret != 0 ) && ( errno == EINTR ) ); + } while (( ret != 0 ) && (errno == EINTR)); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to wait for the semaphore" ); } @@ -103,7 +100,7 @@ void * threaded ( void * arg ) /* The main test function. */ -int main( int argc, char * argv[] ) +int main(int argc, char *argv[]) { int ret, val; sem_t sem; @@ -113,71 +110,61 @@ int main( int argc, char * argv[] ) output_init(); /* Initialize semaphore */ - ret = sem_init( &sem, 0, 0 ); + ret = sem_init(&sem, 0, 0); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to init semaphore" ); } /* Create the thread */ - ret = pthread_create( &th, NULL, threaded, &sem ); + ret = pthread_create(&th, NULL, threaded, &sem); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( ret, "Failed to create the thread" ); } /* Sleep 1 sec so the thread enters the sem_wait call */ - sleep( 1 ); + sleep(1); /* Check value */ - ret = sem_getvalue( &sem, &val ); + ret = sem_getvalue(&sem, &val); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to get semaphore value" ); } - if ( ( val != 0 ) && ( val != -1 ) ) - { - output( "Val: %d\n", val ); - FAILED( "Semaphore count is neither 0 nor # of waiting processes" ); + if ((val != 0) && (val != -1)) { + output("Val: %d\n", val ); + FAILED("Semaphore count is neither 0 nor # of waiting processes"); } /* Post the semaphore */ - ret = sem_post( &sem ); + ret = sem_post(&sem); - if ( ret != 0 ) - { - UNRESOLVED( errno, "Failed to post the semaphore" ); + if (ret != 0) { + UNRESOLVED(errno, "Failed to post the semaphore"); } /* Join the thread */ - ret = pthread_join( th, NULL ); + ret = pthread_join(th, NULL); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( ret, "Failed to join the thread" ); } - /* Destroy the semaphore */ - ret = sem_destroy( &sem ); + ret = sem_destroy(&sem); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to sem_destroy" ); } /* Test passed */ #if VERBOSE > 0 - output( "Test passed\n" ); + output("Test passed\n"); #endif PASSED; } - - diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c index 0774acb..2507fd3 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c @@ -9,9 +9,7 @@ /* * Upon successful completion of calling sem_getvalue, it shall return a value * of zero. -*/ - - + */ #include <stdio.h> #include <errno.h> @@ -19,29 +17,29 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "4-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) != 0 ) { + if (sem_getvalue(mysemp, &val) != 0) { puts("TEST FAILED"); return PTS_FAIL; } else { diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c index c77b19c..1f17f5f 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c @@ -9,8 +9,7 @@ /* * This test case verifies that calling sem_getvalue doesn't change the * state of the semaphore. -*/ - + */ #include <stdio.h> #include <errno.h> @@ -18,40 +17,40 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "5-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[20]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 4); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } - if ( sem_trywait(mysemp) == -1 ) { + if (sem_trywait(mysemp) == -1) { perror(ERROR_PREFIX "sem_trywait"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } @@ -60,7 +59,7 @@ int main() { printf("Current value is: %d\n", val); */ - if (val == 3 ) { + if (val == 3) { puts("TEST PASSED"); sem_close(mysemp); sem_unlink(semname); hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-22 06:36:28
|
The branch, next, has been updated via 6e3dd83d9f575d98d76b8b3f642ad6e8793dbdfc (commit) from c700433fe26d24b975bf241668a9701548e6c21d (commit) - Log ----------------------------------------------------------------- commit 6e3dd83d9f575d98d76b8b3f642ad6e8793dbdfc Author: Rishikesh K Rajak <ris...@li...> Date: Mon Mar 22 12:04:09 2010 +0530 Here's an attempt at fixing up and simplifying the autoconf for detecting libcap and prctl support. After this, make autotools etc work fine on my f12 system, and runltp -f cap_bounds passes. the filecaps tests refuse to run claiming to be unable to find setcap, which I'll worry about next week. (I'm sure there is an AC_ macro for finding a command) And second patch : Remove the run-time checks and just have autoconf check for libcap and setcap presence. After this, filecaps tests compile, install, and pass on f10 at least. Signed-off-by: Serge E. Hallyn <se...@us...> Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: configure.ac | 1 + m4/ltp-cap.m4 | 17 +---- testcases/kernel/security/Makefile | 3 + testcases/kernel/security/cap_bound/cap_bounds_r.c | 44 +++++++------- .../kernel/security/cap_bound/cap_bounds_rw.c | 58 ++++++++++------- .../security/cap_bound/cap_bset_inh_bounds.c | 61 ++++--------------- testcases/kernel/security/cap_bound/check_pe.c | 20 ++---- testcases/kernel/security/cap_bound/dummy.c | 26 +++----- .../kernel/security/cap_bound/exec_with_inh.c | 34 ++-------- .../kernel/security/cap_bound/exec_without_inh.c | 35 ++--------- .../kernel/security/filecaps/check_simple_capset.c | 11 +--- .../kernel/security/filecaps/checkforfilecaps.sh | 40 ------------ .../kernel/security/filecaps/checkforlibcap.sh | 66 -------------------- testcases/kernel/security/filecaps/filecapstest.sh | 16 +----- testcases/kernel/security/filecaps/inh_capped.c | 12 +--- testcases/kernel/security/filecaps/print_caps.c | 2 +- .../kernel/security/filecaps/verify_caps_exec.c | 21 +----- 17 files changed, 112 insertions(+), 355 deletions(-) delete mode 100755 testcases/kernel/security/filecaps/checkforfilecaps.sh delete mode 100755 testcases/kernel/security/filecaps/checkforlibcap.sh diff --git a/configure.ac b/configure.ac index 8a2ebe2..3dd9829 100644 --- a/configure.ac +++ b/configure.ac @@ -61,6 +61,7 @@ AC_CONFIG_SUBDIRS([ \ ]) LTP_CHECK_CAPABILITY_SUPPORT +LTP_CHECK_PRCTL_SUPPORT LTP_CHECK_CRYPTO LTP_CHECK_LINUX_PTRACE LTP_CHECK_SELINUX diff --git a/m4/ltp-cap.m4 b/m4/ltp-cap.m4 index 5f8d969..caa436f 100644 --- a/m4/ltp-cap.m4 +++ b/m4/ltp-cap.m4 @@ -23,21 +23,12 @@ dnl LTP_CHECK_CAPABILITY_SUPPORT dnl ---------------------------- dnl AC_DEFUN([LTP_CHECK_CAPABILITY_SUPPORT],[ +AH_TEMPLATE(HAVE_LIBCAP, +[Define to 1 if you have libcap-2 installed.]) AC_CHECK_HEADERS(sys/capability.h,[ - AC_CHECK_HEADERS(attr/xattr.h) LTP_CAPABILITY_SUPPORT=yes - AC_CHECK_LIB(cap,cap_free,[ - AC_CHECK_LIB(cap,cap_from_text,[ - AC_CHECK_LIB(cap,cap_set_proc,[ - AC_CHECK_LIB(cap,cap_compare,[ - CAP_LIBS="-lcap" - ]) - ]) - ]) - ]) - AC_CHECK_DECLS([CAP_BSET_DROP, CAP_BSET_READ, PR_CAPBSET_READ, cap_compare, cap_free, cap_from_text, cap_get_proc, cap_set_file, cap_set_flag, cap_set_proc, cap_to_text],[],[],[dnl -#include <sys/capability.h> -]) dnl AC_CHECK_DECLS + AC_CHECK_LIB(cap,cap_compare,[AC_DEFINE(HAVE_LIBCAP) CAP_LIBS="-lcap"], [CAP_LIBS=""]) + AC_CHECK_PROG(HAVE_SETCAP,setcap,setcap,false) ])] AC_SUBST(CAP_LIBS) ) diff --git a/testcases/kernel/security/Makefile b/testcases/kernel/security/Makefile index a23ce8f..52b8d06 100644 --- a/testcases/kernel/security/Makefile +++ b/testcases/kernel/security/Makefile @@ -29,6 +29,9 @@ include $(top_srcdir)/include/mk/env_pre.mk ifeq ($(strip $(CAP_LIBS)),) FILTER_OUT_DIRS := cap_bound filecaps endif +ifeq ($(HAVE_SETCAP),false) +FILTER_OUT_DIRS += filecaps +endif # XXX (garrcoop): avoid compilation failures on RHEL 5.4, as reported by # Mitani-san, because of policy versioning issues... diff --git a/testcases/kernel/security/cap_bound/cap_bounds_r.c b/testcases/kernel/security/cap_bound/cap_bounds_r.c index 917d889..0b1c5b3 100644 --- a/testcases/kernel/security/cap_bound/cap_bounds_r.c +++ b/testcases/kernel/security/cap_bound/cap_bounds_r.c @@ -32,21 +32,6 @@ #include <sys/prctl.h> #include <test.h> -#ifndef CAP_LAST_CAP -#warning out-of-date capability.h does not define CAP_LAST_CAP -#define CAP_LAST_CAP 28 /* be ultra-conservative */ -#endif - -#ifndef CAP_BSET_READ -#warning CAP_BSET_READ not defined -#define CAP_BSET_READ 23 -#endif - -#ifndef CAP_BSET_DROP -#warning CAP_BSET_DROP not defined -#define CAP_BSET_DROP 24 -#endif - char *TCID = "cap_bounds_r"; int TST_TOTAL=1; @@ -59,17 +44,27 @@ int main(int argc, char *argv[]) int i; for (i=0; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != 1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, %d) returned %d\n", i, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, %d) returned %d\n", i, ret); if (ret == -1) tst_resm(TINFO, "errno was %d\n", errno); tst_exit(); } } - ret = prctl(CAP_BSET_READ, -1); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, -1); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, -1) returned %d\n", -1, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, -1) returned %d\n", ret); tst_exit(); } @@ -79,13 +74,18 @@ int main(int argc, char *argv[]) * testing... So let's take an insanely high value */ #define INSANE 63 #define max(x,y) (x > y ? x : y) - ret = prctl(CAP_BSET_READ, max(INSANE,CAP_LAST_CAP+1)); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, max(INSANE,CAP_LAST_CAP+1)); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, %d) returned %d\n", CAP_LAST_CAP+1, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, %d) returned %d\n", CAP_LAST_CAP+1, ret); tst_resm(TINFO, " %d is CAP_LAST_CAP+1 and should not exist\n", CAP_LAST_CAP+1); tst_exit(); } - tst_resm(TPASS, "CAP_BSET_READ tests passed\n"); + tst_resm(TPASS, "PR_CAPBSET_READ tests passed\n"); #else tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif diff --git a/testcases/kernel/security/cap_bound/cap_bounds_rw.c b/testcases/kernel/security/cap_bound/cap_bounds_rw.c index 9129c4e..827a305 100644 --- a/testcases/kernel/security/cap_bound/cap_bounds_rw.c +++ b/testcases/kernel/security/cap_bound/cap_bounds_rw.c @@ -31,21 +31,6 @@ #include <sys/prctl.h> #include <test.h> -#ifndef CAP_LAST_CAP -#warning out-of-date capability.h does not define CAP_LAST_CAP -#define CAP_LAST_CAP 28 /* be ultra-conservative */ -#endif - -#ifndef CAP_BSET_READ -#warning CAP_BSET_READ not defined -#define CAP_BSET_READ 23 -#endif - -#ifndef CAP_BSET_DROP -#warning CAP_BSET_DROP not defined -#define CAP_BSET_DROP 24 -#endif - char *TCID = "cap_bounds_rw"; int TST_TOTAL=1; @@ -57,7 +42,12 @@ int check_remaining_caps(int lastdropped) int ret; for (i=0; i <= lastdropped; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret == -1) { tst_resm(TBROK, "Failed to read bounding set during sanity check\n"); tst_exit(); @@ -68,7 +58,12 @@ int check_remaining_caps(int lastdropped) } } for (; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret == -1) { tst_resm(TBROK, "Failed to read bounding set during sanity check\n"); tst_exit(); @@ -86,9 +81,14 @@ int main(int argc, char *argv[]) int ret = 1; int i; - ret = prctl(CAP_BSET_DROP, -1); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_READ, -1); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, -1) returned %d\n", ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, -1) returned %d\n", ret); tst_exit(); } /* Ideally I'd check CAP_LAST_CAP+1, but userspace @@ -97,16 +97,26 @@ int main(int argc, char *argv[]) * testing... So let's take an insanely high value */ #define INSANE 63 #define max(x,y) (x > y ? x : y) - ret = prctl(CAP_BSET_DROP, max(INSANE,CAP_LAST_CAP+1)); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_DROP, max(INSANE,CAP_LAST_CAP+1)); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, %d) returned %d\n", max(INSANE, CAP_LAST_CAP+1), ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, %d) returned %d\n", max(INSANE, CAP_LAST_CAP+1), ret); tst_resm(TINFO, " %d is should not exist\n", max(INSANE, CAP_LAST_CAP+1)); tst_exit(); } for (i=0; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_DROP, i); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_DROP, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != 0) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, %d) returned %d\n", i, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, %d) returned %d\n", i, ret); if (ret == -1) tst_resm(TINFO, "errno was %d\n", errno); tst_exit(); @@ -122,6 +132,6 @@ int main(int argc, char *argv[]) tst_exit(); } } - tst_resm(TPASS, "CAP_BSET_DROP tests passed\n"); + tst_resm(TPASS, "PR_CAPBSET_DROP tests passed\n"); tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c b/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c index 894e0a5..c6c34c0 100644 --- a/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c +++ b/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c @@ -39,9 +39,11 @@ int TST_TOTAL=2; int errno; +#if HAVE_SYS_CAPABILITY_H +#if HAVE_DECL_PR_CAPBSET_READ && HAVE_DECL_PR_CAPBSET_DROP +#ifdef HAVE_LIBCAP int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H int ret = 1; cap_value_t v[1]; cap_flag_value_t f; @@ -49,12 +51,7 @@ int main(int argc, char *argv[]) /* We pick a random capability... let's use CAP_SYS_ADMIN */ /* make sure we have the capability now */ -#if HAVE_DECL_CAP_BSET_READ - ret = prctl(CAP_BSET_READ, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_READ, CAP_SYS_ADMIN); if (ret != 1) { tst_resm(TBROK, "Not starting with CAP_SYS_ADMIN\n"); tst_exit(); @@ -66,47 +63,23 @@ int main(int argc, char *argv[]) tst_resm(TBROK, "Failed to create cap_sys_admin+i cap_t (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#else - errno = ENOSYS; - ret = -1; -#endif if (ret) { tst_resm(TBROK, "Failed to cap_set_proc with cap_sys_admin+i (ret %d errno %d)\n", ret, errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - errno = ENOSYS; - ret = -1; -#endif -#else - errno = ENOSYS; - ret = -1; -#endif if (ret || f != CAP_SET) { tst_resm(TBROK, "Failed to add CAP_SYS_ADMIN to pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -114,18 +87,8 @@ int main(int argc, char *argv[]) } /* test 1: is CAP_SYS_ADMIN still in pI? */ -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - errno = ENOSYS; - ret = -1; -#endif -#else - errno = ENOSYS; - ret = -1; -#endif if (ret || f != CAP_SET) { tst_resm(TFAIL, "CAP_SYS_ADMIN not in pI after dropping from bounding set\n"); tst_exit(); @@ -144,24 +107,24 @@ int main(int argc, char *argv[]) tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(tmpcap); -#endif /* test 2: can we put it back in pI? */ -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#endif if (ret == 0) { /* success means pI was not bounded by X */ tst_resm(TFAIL, "Managed to put CAP_SYS_ADMIN back into pI though not in X\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif tst_resm(TPASS, "Couldn't put CAP_SYS_ADMIN back into pI when not in bounding set\n"); -#else +#else /* HAVE_LIBCAP */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* HAVE_DECL_PR_CAPBSET_READ && HAVE_DECL_PR_CAPBSET_DROP */ + tst_resm(TCONF, "System doesn't have CAPBSET prctls."); +#endif +#else /* HAVE_SYS_CAPABILITY_H */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/check_pe.c b/testcases/kernel/security/cap_bound/check_pe.c index 2e0451a..f621e70 100644 --- a/testcases/kernel/security/cap_bound/check_pe.c +++ b/testcases/kernel/security/cap_bound/check_pe.c @@ -40,9 +40,10 @@ int TST_TOTAL=1; int errno; +#if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H int ret = 1; cap_flag_value_t f; cap_t cur; @@ -58,26 +59,14 @@ int main(int argc, char *argv[]) tst_exit(); } -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_EFFECTIVE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "cap_get_flag failed (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif if (n == 1) { if (f == CAP_SET) { tst_resm(TPASS, "cap is in pE\n"); @@ -91,8 +80,11 @@ int main(int argc, char *argv[]) tst_exit(); } tst_resm(TFAIL, "Cap is in pE\n"); -#else +#else /* libcap */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* capability_h */ + tst_resm(TCONF, "System doesn't have sys/capability.h"); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/dummy.c b/testcases/kernel/security/cap_bound/dummy.c index ad65007..e882940 100644 --- a/testcases/kernel/security/cap_bound/dummy.c +++ b/testcases/kernel/security/cap_bound/dummy.c @@ -5,31 +5,21 @@ #include <sys/capability.h> #endif -#define END \ - printf("System doesn't support POSIX capabilities.\n"); \ - return 1 - int main() { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP cap_t cur; -#if HAVE_DECL_CAP_SET_PROC -#if HAVE_DECL_CAP_FROM_TEXT cur = cap_from_text("all=eip"); cap_set_proc(cur); -#else - END; -#endif -#else - END; -#endif -#if HAVE_DECL_CAP_FREE cap_free(cur); -#else - END; + return 0; +#else /* libcap */ + printf("System doesn't support POSIX capabilities.\n"); + return 1; #endif -#else - END; +#else /* capability_h */ + printf("System doesn't support sys/capability.h\n"); + return 1; #endif - return 0; } diff --git a/testcases/kernel/security/cap_bound/exec_with_inh.c b/testcases/kernel/security/cap_bound/exec_with_inh.c index 21c60fd..123f665 100644 --- a/testcases/kernel/security/cap_bound/exec_with_inh.c +++ b/testcases/kernel/security/cap_bound/exec_with_inh.c @@ -42,59 +42,34 @@ int errno; int main(int argc, char *argv[]) { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int ret = 1; cap_flag_value_t f; cap_t cur = 0; /* Make sure CAP_SYS_ADMIN is in pI */ -#if HAVE_DECL_CAP_FROM_TEXT cur = cap_from_text("all=eip"); -#endif if (!cur) { tst_resm(TBROK, "Failed to create cap_sys_admin+i cap_t (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "Failed to cap_set_proc with cap_sys_admin+i (ret %d errno %d)\n", ret, errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (ret || f != CAP_SET) { tst_resm(TBROK, "Failed to add CAP_SYS_ADMIN to pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -104,8 +79,11 @@ int main(int argc, char *argv[]) /* execute "check_pe 1" */ execl("check_pe", "check_pe", "1", NULL); tst_resm(TBROK, "Failed to execute check_pe (errno %d)\n", errno); -#else +#else /* HAVE_LIBCAP */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* HAVE_SYS_CAPABILITY_H */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/exec_without_inh.c b/testcases/kernel/security/cap_bound/exec_without_inh.c index 81216f3..df3c4d9 100644 --- a/testcases/kernel/security/cap_bound/exec_without_inh.c +++ b/testcases/kernel/security/cap_bound/exec_without_inh.c @@ -42,39 +42,20 @@ int errno; int main(int argc, char *argv[]) { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int ret = 1; cap_flag_value_t f; cap_value_t v[1]; cap_t cur; /* Make sure CAP_SYS_ADMIN is not in pI */ -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (f == CAP_SET) { v[0] = CAP_SYS_ADMIN; -#if HAVE_DECL_CAP_SET_FLAG ret = cap_set_flag(cur, CAP_INHERITABLE, 1, v, CAP_CLEAR); -#else - ret = -1; - errno = ENOSYS; -#endif -#if HAVE_DECL_CAP_SET_PROC if (!ret) ret = cap_set_proc(cur); -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "Failed to drop cap_sys_admin from pI\n"); tst_exit(); @@ -83,17 +64,10 @@ int main(int argc, char *argv[]) tst_brkm(TBROK | TERRNO, tst_exit, "Failed to add \ CAP_SYS_ADMIN to pI"); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -103,8 +77,11 @@ int main(int argc, char *argv[]) /* execute "check_pe 0" */ execl("check_pe", "check_pe", "0", NULL); tst_resm(TBROK, "Failed to execute check_pe (errno %d)\n", errno); -#else +#else /* libcap */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* capability_h */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/filecaps/check_simple_capset.c b/testcases/kernel/security/filecaps/check_simple_capset.c index 7851e01..6c7790d 100644 --- a/testcases/kernel/security/filecaps/check_simple_capset.c +++ b/testcases/kernel/security/filecaps/check_simple_capset.c @@ -27,28 +27,21 @@ int main() { -#if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP cap_t caps, caps2; int ret; -#if HAVE_DECL_CAP_FROM_TEXT && HAVE_DECL_CAP_SET_PROC && HAVE_DECL_CAP_COMPARE caps = cap_from_text("cap_setpcap+ep"); caps2 = cap_from_text("cap_setpcap+ep"); ret = cap_set_proc(caps); ret = cap_compare(caps, caps2); -#else - printf("System doesn't support full POSIX capabilities.\n"); - return 1; -#endif printf("Caps were %sthe same\n", ret ? "not " : ""); -#if HAVE_DECL_CAP_FREE cap_free(caps); cap_free(caps2); -#endif return ret; #else - printf("System doesn't support POSIX capabilities.\n"); + printf("System doesn't support full POSIX capabilities.\n"); return 1; #endif } diff --git a/testcases/kernel/security/filecaps/checkforfilecaps.sh b/testcases/kernel/security/filecaps/checkforfilecaps.sh deleted file mode 100755 index 757d409..0000000 --- a/testcases/kernel/security/filecaps/checkforfilecaps.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -################################################################################ -## ## -## Copyright (c) International Business Machines Corp., 2008 ## -## ## -## This program is free software; you can redistribute it and#or modify ## -## it under the terms of the GNU General Public License as published by ## -## the Free Software Foundation; either version 2 of the License, or ## -## (at your option) any later version. ## -## ## -## This program is distributed in the hope that it will be useful, but ## -## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## -## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## -## for more details. ## -## ## -## You should have received a copy of the GNU General Public License ## -## along with this program; if not, write to the Free Software ## -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## -## ## -################################################################################ - -if ! check_simple_capset; then - echo Posix capabilities not compiled into the kernel. Please - echo modprobe capability or recompile your kernel with - echo CONFIG_SECURITY_CAPABILITIES=y. - exit 1 -fi - -touch testme -setcap cap_sys_admin=ip testme -ret=$? -rm -f testme -if [ $ret -ne 0 ]; then - echo File capabilities not compiled into kernel. Please - echo make sure your kernel is compiled with - echo CONFIG_SECURITY_FILE_CAPABILITIES=y. - exit 1 -fi - -exit 0 diff --git a/testcases/kernel/security/filecaps/checkforlibcap.sh b/testcases/kernel/security/filecaps/checkforlibcap.sh deleted file mode 100755 index cc7642e..0000000 --- a/testcases/kernel/security/filecaps/checkforlibcap.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh -################################################################################ -## ## -## Copyright (c) International Business Machines Corp., 2008 ## -## ## -## This program is free software; you can redistribute it and#or modify ## -## it under the terms of the GNU General Public License as published by ## -## the Free Software Foundation; either version 2 of the License, or ## -## (at your option) any later version. ## -## ## -## This program is distributed in the hope that it will be useful, but ## -## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## -## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## -## for more details. ## -## ## -## You should have received a copy of the GNU General Public License ## -## along with this program; if not, write to the Free Software ## -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## -## ## -################################################################################ - -if [ "x$CC" = "x" ]; then - export CC=gcc -fi -yesno=0 -if [ "$1" = "yesno" ]; then - yesno=1 -fi - -SETCAP=`which setcap` -if [ -z "${SETCAP}" ]; then - ret=1 -else - ret=0 -fi - -if [ $ret -eq 0 ]; then - #also test for -lcap - $CC -o check_simple_capset check_simple_capset.c -lcap \ - 2>/dev/null - - ret=$? -fi - -if [ $ret -eq 0 ]; then - #also test for xattr - $CC -o check_xattr check_xattr.c - ret=$? - if [ $ret -ne 0 ]; then - echo "Please install xattr headers" - fi -fi - -if [ $ret -ne 0 ]; then - if [ $yesno -eq 1 ]; then - echo no - else - exit 1 - fi -else - if [ $yesno -eq 1 ]; then - echo yes - else - exit 0 - fi -fi diff --git a/testcases/kernel/security/filecaps/filecapstest.sh b/testcases/kernel/security/filecaps/filecapstest.sh index 149cbc1..9025b58 100755 --- a/testcases/kernel/security/filecaps/filecapstest.sh +++ b/testcases/kernel/security/filecaps/filecapstest.sh @@ -19,22 +19,8 @@ ## ## ################################################################################ -checkforlibcap.sh -ret=$? -if [ $ret -ne 0 ]; then - echo "Filecaps 0 CONF : System doesn't support execution of the test" - echo setcap not installed. Please install libcap-2.11 or newer from - echo ftp://ftp.kernel.org/pub/linux/libs/security/linux-privs/libcap2 - exit 0 -fi -checkforfilecaps.sh -ret=$? -if [ $ret -ne 0 ]; then - echo "Filecaps 0 CONF : File capabilities not available" - exit 0 -fi - echo "Running in:" +rm -f print_caps cp $LTPROOT/testcases/bin/print_caps . mkfifo caps_fifo chmod 777 caps_fifo diff --git a/testcases/kernel/security/filecaps/inh_capped.c b/testcases/kernel/security/filecaps/inh_capped.c index 513fcb9..794e8b1 100644 --- a/testcases/kernel/security/filecaps/inh_capped.c +++ b/testcases/kernel/security/filecaps/inh_capped.c @@ -34,21 +34,17 @@ char *TCID = "filecaps"; int TST_TOTAL=1; +#ifdef HAVE_LIBCAP void debug_print_caps(char *when) { -#ifdef DEBUG char buf[2000]; tst_resm(TINFO, "%s", when); -#if HAVE_DECL_SET_CAP_TO_TEXT snprintf(buf, 2000, "%s", cap_to_text(cap_get_proc(), NULL)); -#endif tst_resm(TINFO, "%s", buf); -#endif } int set_caps_from_text(char *capstr) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_SET_CAP_SET_PROC && HAVE_DECL_SET_CAP_FREE cap_t caps = cap_from_text(capstr); int ret; @@ -59,14 +55,12 @@ int set_caps_from_text(char *capstr) ret = cap_set_proc(caps); cap_free(caps); return ret; -#else - return -1; -#endif } +#endif int main() { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_SET_CAPS_FROM_TEXT +#ifdef HAVE_LIBCAP int ret; debug_print_caps("start"); diff --git a/testcases/kernel/security/filecaps/print_caps.c b/testcases/kernel/security/filecaps/print_caps.c index 188856e..f0e9bce 100644 --- a/testcases/kernel/security/filecaps/print_caps.c +++ b/testcases/kernel/security/filecaps/print_caps.c @@ -40,7 +40,7 @@ int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_GET_PROC && HAVE_DECL_CAP_TO_TEXT +#ifdef HAVE_LIBCAP cap_t cap = cap_get_proc(); int fd; int seqno = 0; diff --git a/testcases/kernel/security/filecaps/verify_caps_exec.c b/testcases/kernel/security/filecaps/verify_caps_exec.c index 16fcc0f..5250007 100644 --- a/testcases/kernel/security/filecaps/verify_caps_exec.c +++ b/testcases/kernel/security/filecaps/verify_caps_exec.c @@ -60,20 +60,18 @@ void usage(char *me) #define DROP_PERMS 0 #define KEEP_PERMS 1 +#ifdef HAVE_LIBCAP void print_my_caps() { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_GET_PROC && HAVE_DECL_CAP_TO_TEXT cap_t cap = cap_get_proc(); char *txt = cap_to_text(cap, NULL); tst_resm(TINFO, "\ncaps are %s\n", txt); cap_free(cap); cap_free(txt); -#endif } int drop_root(int keep_perms) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_FROM_TEXT && HAVE_DECL_CAP_SET_PROC int ret; if (keep_perms) @@ -89,15 +87,11 @@ int drop_root(int keep_perms) cap_set_proc(cap); cap_free(cap); } -#else - tst_resm(TCONF, "System doesn't have full POSIX capabilities support.\n"); -#endif tst_exit(); } int perms_test(void) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_SET_FILE int ret; cap_t cap; @@ -118,9 +112,6 @@ int perms_test(void) cap_free(cap); return ret; -#else - return -1; -#endif } #define FIFOFILE "caps_fifo" @@ -160,7 +151,6 @@ void read_from_fifo(char *buf) close(fd); } -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_COMPARE && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_TO_TEXT int fork_drop_and_exec(int keepperms, cap_t expected_caps) { @@ -219,12 +209,9 @@ int fork_drop_and_exec(int keepperms, cap_t expected_caps) } return ret; } -#endif int caps_actually_set_test(void) { - -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_PR_CAPBSET_READ int whichcap, finalret = 0, ret; cap_t fcap, pcap, cap_fullpi; cap_value_t capvalue[1]; @@ -399,17 +386,15 @@ int caps_actually_set_test(void) cap_free(cap_fullpi); return finalret; -#else - return -1; -#endif } +#endif int main(int argc, char *argv[]) { +#ifdef HAVE_LIBCAP if (argc < 2) usage(argv[0]); -#if HAVE_SYS_CAPABILITY_H int ret = 0; switch(atoi(argv[1])) { hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-22 06:37:56
|
The branch, next, has been updated via 95a376d4e50acd0c90bf749060a1974338a082a9 (commit) from 6e3dd83d9f575d98d76b8b3f642ad6e8793dbdfc (commit) - Log ----------------------------------------------------------------- commit 95a376d4e50acd0c90bf749060a1974338a082a9 Author: Rishikesh K Rajak <ris...@li...> Date: Mon Mar 22 12:07:05 2010 +0530 As pointed out by Cheng Shun Xia one of open posix conformace tests is testing return value from sigset(SIGCHLD, SIG_HOLD) and expect this value to be SIG_HOLD, however this is true only if SIGCHLD is already blocked so we must ensure that. Patch is attached. Signed-off-by: Cyril Hrubis ch...@su... Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: .../conformance/interfaces/sigset/8-1.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-) diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c index f344b19..22b1f40 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c @@ -15,12 +15,22 @@ #include <signal.h> #include <stdio.h> #include <stdlib.h> +#include <errno.h> +#include <string.h> #include "posixtest.h" -int main() +int main(void) { + sigset_t st; + sigemptyset(&st); + sigaddset(&st, SIGCHLD); - if (sigset(SIGCHLD,SIG_HOLD) != SIG_HOLD) { + if (sigprocmask(SIG_BLOCK, &st, NULL) < 0) { + printf("Test FAILED: sigprocmask(): %s\n", strerror(errno)); + return PTS_FAIL; + } + + if (sigset(SIGCHLD, SIG_HOLD) != SIG_HOLD) { printf("Test FAILED: sigset() didn't return SIG_HOLD\n"); return PTS_FAIL; } hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-22 08:10:36
|
The branch, next, has been updated via c65b70531c8d383a957654ad5179cb302b405a3b (commit) from 95a376d4e50acd0c90bf749060a1974338a082a9 (commit) - Log ----------------------------------------------------------------- commit c65b70531c8d383a957654ad5179cb302b405a3b Author: Rishikesh K Rajak <ris...@li...> Date: Mon Mar 22 13:38:45 2010 +0530 Remaining patch for new file addition for commit:6e3dd83d9f575d98d76b8b3f642ad6e8793dbdfc ----------------------------------------------------------------------- Summary of changes: m4/{ltp-unshare.m4 => ltp-prctl.m4} | 10 ++++++++-- .../filecaps/{check_simple_capset.c => c.c} | 5 +---- 2 files changed, 9 insertions(+), 6 deletions(-) copy m4/{ltp-unshare.m4 => ltp-prctl.m4} (80%) copy testcases/kernel/security/filecaps/{check_simple_capset.c => c.c} (97%) diff --git a/m4/ltp-unshare.m4 b/m4/ltp-prctl.m4 similarity index 80% copy from m4/ltp-unshare.m4 copy to m4/ltp-prctl.m4 index 60f4c54..51edb08 100644 --- a/m4/ltp-unshare.m4 +++ b/m4/ltp-prctl.m4 @@ -19,7 +19,13 @@ dnl Author: Garrett Cooper <yan...@gm...> dnl dnl -dnl LTP_CHECK_SYSCALL_UNSHARE +dnl LTP_CHECK_PRCTL_SUPPORT dnl ---------------------------- dnl -AC_DEFUN([LTP_CHECK_SYSCALL_UNSHARE],[AC_CHECK_FUNCS_ONCE(unshare)]) +AC_DEFUN([LTP_CHECK_PRCTL_SUPPORT],[ +AC_CHECK_HEADERS(sys/prctl.h,[ + AC_CHECK_DECLS([PR_CAPBSET_DROP, PR_CAPBSET_READ], [],[],[dnl +#include <sys/prctl.h> +]) dnl AC_CHECK_DECLS +])] +) diff --git a/testcases/kernel/security/filecaps/check_simple_capset.c b/testcases/kernel/security/filecaps/c.c similarity index 97% copy from testcases/kernel/security/filecaps/check_simple_capset.c copy to testcases/kernel/security/filecaps/c.c index 6c7790d..ee6cf05 100644 --- a/testcases/kernel/security/filecaps/check_simple_capset.c +++ b/testcases/kernel/security/filecaps/c.c @@ -20,17 +20,14 @@ #include <stdio.h> -#include "config.h" -#if HAVE_SYS_CAPABILITY_H #include <sys/capability.h> -#endif int main() { -#ifdef HAVE_LIBCAP cap_t caps, caps2; int ret; +#ifdef HAVE_LIBCAP caps = cap_from_text("cap_setpcap+ep"); caps2 = cap_from_text("cap_setpcap+ep"); ret = cap_set_proc(caps); hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-23 04:44:48
|
The branch, master, has been updated via 96a4822d72478abce6dceabc816f658ba4ded0d3 (commit) via c700433fe26d24b975bf241668a9701548e6c21d (commit) via 4d574b9f3c82a58d88b97e201ac49cddf7bc5c24 (commit) via e7ed287c04bef2108fa544b0b86629e554403970 (commit) via b80fdefbd1843484e5a3ccc3d5748fee5b4cd1f7 (commit) from 00c8b3450d151482e9f7424224fc8a64bff27fdd (commit) - Log ----------------------------------------------------------------- commit 96a4822d72478abce6dceabc816f658ba4ded0d3 Author: Rishikesh K Rajak <ris...@li...> Date: Mon Mar 22 11:53:21 2010 +0530 Merge branches 'next' and 'master' ----------------------------------------------------------------------- Summary of changes: .../rtc}/Makefile | 16 +- testcases/kernel/device-drivers/rtc/README | 29 +++ testcases/kernel/device-drivers/rtc/rtc-test.c | 218 ++++++++++++++++++++ .../conformance/interfaces/sem_getvalue/1-1.c | 21 +- .../conformance/interfaces/sem_getvalue/2-1.c | 19 +- .../conformance/interfaces/sem_getvalue/2-2.c | 59 ++---- .../conformance/interfaces/sem_getvalue/4-1.c | 18 +- .../conformance/interfaces/sem_getvalue/5-1.c | 23 +- 8 files changed, 318 insertions(+), 85 deletions(-) copy testcases/kernel/{syscalls/clock_nanosleep => device-drivers/rtc}/Makefile (73%) create mode 100644 testcases/kernel/device-drivers/rtc/README create mode 100644 testcases/kernel/device-drivers/rtc/rtc-test.c diff --git a/testcases/kernel/syscalls/clock_nanosleep/Makefile b/testcases/kernel/device-drivers/rtc/Makefile similarity index 73% copy from testcases/kernel/syscalls/clock_nanosleep/Makefile copy to testcases/kernel/device-drivers/rtc/Makefile index 71ebae9..9b776ca 100644 --- a/testcases/kernel/syscalls/clock_nanosleep/Makefile +++ b/testcases/kernel/device-drivers/rtc/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) International Business Machines Corp., 2009 +# Copyright (c) Larsen & Toubro Infotech Ltd., 2010 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,13 +13,17 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# # -top_srcdir ?= ../../../.. +CFLAGS = -O2 -Wall -I ../../../../include/ +LIBS = -L ../../../../lib/ -lltp +SRC = rtc-test.c -include $(top_srcdir)/include/mk/testcases.mk -LDLIBS += -lpthread -lrt +all: $(SRC) + $(CC) $(SRC) $(CFLAGS) $(LIBS) -o rtc-test -include $(top_srcdir)/include/mk/generic_leaf_target.mk +clean: + rm -f rtc-test diff --git a/testcases/kernel/device-drivers/rtc/README b/testcases/kernel/device-drivers/rtc/README new file mode 100644 index 0000000..3094aa7 --- /dev/null +++ b/testcases/kernel/device-drivers/rtc/README @@ -0,0 +1,29 @@ +rtc-test.c : Test the Real Time Clock driver + +Tests supported as of now +-------------------------- +1. Read test : This reads the time/date from the RTC + ioctls tested :- RTC_RD_TIME. + +2. Alarm Test: Sets the alarm to 5 seconds in future and makes sure it rings. + ioctls tested :- RTC_ALM_SET, RTC_ALM_READ, RTC_AIE_ON, RTC_AIE_OFF. + +3. Update interrupts test : Sets Update interrupts enable on, waits for five + interrupts and then turns it off. + ioctls tested :- RTC_UIE_ON, RTC_UIE_OFF. + + +How to Build +------------ +You have to build the complete LTP package before trying to build these tests. +After building the complete LTP sources enter this directory and issue a 'make'. + +How to Run +---------- + + The tests assume the rtc device node to be "/dev/rtc". If you have a +different node run the test with the name of the node as a parameter. + +Eg. If your node is /dev/rtc0, then run the test as + + $ ./rtc-test /dev/rtc0 diff --git a/testcases/kernel/device-drivers/rtc/rtc-test.c b/testcases/kernel/device-drivers/rtc/rtc-test.c new file mode 100644 index 0000000..a62b033 --- /dev/null +++ b/testcases/kernel/device-drivers/rtc/rtc-test.c @@ -0,0 +1,218 @@ +/* rtc-test.c + * + * Tests for the Real Time Clock driver. + * + * Copyright (c) Larsen & Toubro Infotech Ltd., 2010 + * + * Author : Silesh C V <Sil...@ln...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "test.h" +#include <sys/ioctl.h> +#include <stdio.h> +#include <stdlib.h> +#include <fcntl.h> +#include <unistd.h> +#include <linux/rtc.h> +#include <errno.h> +#include <time.h> + +int rtc_fd = -1; +char *TCID = "rtc01"; +int TST_TOTAL = 3; + + +/* Read and Alarm Tests : Read test reads the Date/time from RTC + * while Alarm test, sets the alarm to 5 seconds in future and + * waits for it to ring.The ioctls tested in these tests are + * RTC_RD_TIME, RTC_ALM_SET, RTC_ALM_READ, RTC_AIE_OFF */ + +void read_alarm_test(void) +{ + struct rtc_time rtc_tm; + int ret; + unsigned long data; + fd_set rfds; + struct timeval tv; + + tst_resm(TINFO, "RTC READ TEST:"); + + /*Read RTC Time*/ + ret = ioctl(rtc_fd, RTC_RD_TIME, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_RD_TIME ioctl failed"); + return; + } + + tst_resm(TPASS, "RTC READ TEST Passed"); + + tst_resm(TINFO, "Current RTC date/time is %d-%d-%d, %02d:%02d:%02d.", + rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900, + rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); + + tst_resm(TINFO, "RTC ALARM TEST :"); + + /*set Alarm to 5 Seconds*/ + rtc_tm.tm_sec += 5; + if (rtc_tm.tm_sec >= 60) { + rtc_tm.tm_sec %= 60; + rtc_tm.tm_min++; + } + + if (rtc_tm.tm_min == 60) { + rtc_tm.tm_min = 0; + rtc_tm.tm_hour++; + } + + if (rtc_tm.tm_hour == 24) + rtc_tm.tm_hour = 0; + + ret = ioctl(rtc_fd, RTC_ALM_SET, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_ALM_SET ioctl failed"); + return; + } + + /*Read current alarm time*/ + ret = ioctl(rtc_fd, RTC_ALM_READ, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_ALM_READ ioctl failed"); + return; + } + + tst_resm(TINFO, "Alarm time set to %02d:%02d:%02d.", + rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); + /* Enable alarm interrupts */ + ret = ioctl(rtc_fd, RTC_AIE_ON, 0); + if (ret == -1) { + tst_resm(TINFO, "RTC_AIE_ON ioctl failed"); + return; + } + + tst_resm(TINFO, "Waiting 5 seconds for the alarm..."); + + tv.tv_sec = 6;/*set 6 seconds as the time out*/ + tv.tv_usec = 0; + + FD_ZERO(&rfds); + FD_SET(rtc_fd, &rfds); + + ret = select(rtc_fd + 1, &rfds, NULL, NULL, &tv);/*wait for alarm*/ + + if (ret == -1) { + tst_resm(TFAIL, "select failed"); + return; + } else if (ret) { + ret = read(rtc_fd, &data, sizeof(unsigned long)); + if (ret == -1) { + tst_resm(TFAIL, "read failed"); + return; + } + tst_resm(TINFO, "Alarm rang."); + } else { + tst_resm(TFAIL, "Timed out waiting for the alarm"); + return; + } + + /* Disable alarm interrupts */ + ret = ioctl(rtc_fd, RTC_AIE_OFF, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_AIE_OFF ioctl failed"); + return; + } + tst_resm(TPASS, "RTC ALARM TEST Passed"); +} + +/* Update_interrupts_test :Once the Update interrupts is enabled, + * the RTC gives interrupts (1/sec) on the interrupts line(if the rtc + * has one). This is tested by enabling the update interrupts + * and then waiting for 5 interrupts.*/ + +void update_interrupts_test(void) +{ + int ret, i; + unsigned long data; + fd_set rfds; + struct timeval tv; + + tst_resm(TINFO, "RTC UPDATE INTERRUPTS TEST :"); + /*Turn on update interrupts*/ + ret = ioctl(rtc_fd, RTC_UIE_ON, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_UIE_ON ioctl failed"); + return; + } + + tst_resm(TINFO, "Waiting for 5 update interrupts..."); + for (i = 1; i < 6; i++) { + + tv.tv_sec = 2; /*2 sec time out for each interrupt*/ + tv.tv_usec = 0; + + FD_ZERO(&rfds); + FD_SET(rtc_fd, &rfds); + + ret = select(rtc_fd + 1, &rfds, NULL, NULL, &tv); + if (ret == -1) { + tst_resm(TFAIL, "select failed"); + return; + } else if (ret) { + ret = read(rtc_fd, &data, sizeof(unsigned long)); + if (ret == -1) { + tst_resm(TFAIL, "read failed"); + return; + } + tst_resm(TINFO, "Update interrupt %d", i); + } else { + tst_resm(TFAIL, + "Timed out waiting for the update interrupt"); + return; + } + } + + /* Turn off update interrupts */ + ret = ioctl(rtc_fd, RTC_UIE_OFF, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_UIE_OFF ioctl failed"); + return; + } + tst_resm(TPASS, "RTC UPDATE INTERRUPTS TEST Passed"); +} + +int main(int argc, char **argv) +{ + char *rtc_dev = "/dev/rtc"; + + if (argc == 2) + rtc_dev = argv[1]; + + rtc_fd = open(rtc_dev, O_RDONLY); + + if (rtc_fd < 0) + tst_brkm(TBROK | TERRNO, tst_exit, "couldn't open %s", rtc_dev); + + /*Read and alarm tests*/ + read_alarm_test(); + + /*Update interrupts test*/ + update_interrupts_test(); + + close(rtc_fd); + + tst_resm(TINFO, "RTC Tests Done!"); + return 0; +} diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c index 767f1b0..c0746c0 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c @@ -10,9 +10,7 @@ * This test case will call sem_getvalue to update the location referenced * by the semaphpre without effecting the state of the semaphore. The * updated value represents the actual semaphore value when it was called. -*/ - - + */ #include <stdio.h> #include <errno.h> @@ -20,29 +18,29 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "1-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } @@ -50,7 +48,8 @@ int main() { /* printf("Current value is: %d\n", val); */ - if (val == 1 ) { + + if (val == 1) { puts("TEST PASSED"); sem_close(mysemp); sem_unlink(semname); diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c index ac19af8..06814fb 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c @@ -8,8 +8,7 @@ /* * When semaphore is locked, then the value returned by sem_getvalue is zero. -*/ - + */ #include <stdio.h> #include <errno.h> @@ -17,35 +16,35 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "2-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } /* Lock Semaphore */ - if (sem_trywait(mysemp) == -1 ) { + if (sem_trywait(mysemp) == -1) { perror(ERROR_PREFIX "trywait"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) < 0 ) { + if (sem_getvalue(mysemp, &val) < 0) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c index 5918ceb..9989e48 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c @@ -83,18 +83,15 @@ /*************************** Test case ***********************************/ /******************************************************************************/ -void * threaded ( void * arg ) +void *threaded(void * arg) { int ret; - do - { + do { ret = sem_wait( arg ); - } - while ( ( ret != 0 ) && ( errno == EINTR ) ); + } while (( ret != 0 ) && (errno == EINTR)); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to wait for the semaphore" ); } @@ -103,7 +100,7 @@ void * threaded ( void * arg ) /* The main test function. */ -int main( int argc, char * argv[] ) +int main(int argc, char *argv[]) { int ret, val; sem_t sem; @@ -113,71 +110,61 @@ int main( int argc, char * argv[] ) output_init(); /* Initialize semaphore */ - ret = sem_init( &sem, 0, 0 ); + ret = sem_init(&sem, 0, 0); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to init semaphore" ); } /* Create the thread */ - ret = pthread_create( &th, NULL, threaded, &sem ); + ret = pthread_create(&th, NULL, threaded, &sem); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( ret, "Failed to create the thread" ); } /* Sleep 1 sec so the thread enters the sem_wait call */ - sleep( 1 ); + sleep(1); /* Check value */ - ret = sem_getvalue( &sem, &val ); + ret = sem_getvalue(&sem, &val); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to get semaphore value" ); } - if ( ( val != 0 ) && ( val != -1 ) ) - { - output( "Val: %d\n", val ); - FAILED( "Semaphore count is neither 0 nor # of waiting processes" ); + if ((val != 0) && (val != -1)) { + output("Val: %d\n", val ); + FAILED("Semaphore count is neither 0 nor # of waiting processes"); } /* Post the semaphore */ - ret = sem_post( &sem ); + ret = sem_post(&sem); - if ( ret != 0 ) - { - UNRESOLVED( errno, "Failed to post the semaphore" ); + if (ret != 0) { + UNRESOLVED(errno, "Failed to post the semaphore"); } /* Join the thread */ - ret = pthread_join( th, NULL ); + ret = pthread_join(th, NULL); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( ret, "Failed to join the thread" ); } - /* Destroy the semaphore */ - ret = sem_destroy( &sem ); + ret = sem_destroy(&sem); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to sem_destroy" ); } /* Test passed */ #if VERBOSE > 0 - output( "Test passed\n" ); + output("Test passed\n"); #endif PASSED; } - - diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c index 0774acb..2507fd3 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c @@ -9,9 +9,7 @@ /* * Upon successful completion of calling sem_getvalue, it shall return a value * of zero. -*/ - - + */ #include <stdio.h> #include <errno.h> @@ -19,29 +17,29 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "4-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) != 0 ) { + if (sem_getvalue(mysemp, &val) != 0) { puts("TEST FAILED"); return PTS_FAIL; } else { diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c index c77b19c..1f17f5f 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c @@ -9,8 +9,7 @@ /* * This test case verifies that calling sem_getvalue doesn't change the * state of the semaphore. -*/ - + */ #include <stdio.h> #include <errno.h> @@ -18,40 +17,40 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "5-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[20]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 4); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } - if ( sem_trywait(mysemp) == -1 ) { + if (sem_trywait(mysemp) == -1) { perror(ERROR_PREFIX "sem_trywait"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } @@ -60,7 +59,7 @@ int main() { printf("Current value is: %d\n", val); */ - if (val == 3 ) { + if (val == 3) { puts("TEST PASSED"); sem_close(mysemp); sem_unlink(semname); hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-23 08:59:21
|
The branch, master, has been updated via b72a24c9eb339841a0c4b82d384a5b3ba10c9ecb (commit) via f102fd9735f01b4e2c9ae44f3c90d1a56d4d81f8 (commit) via 965127e99f1c3e4035a3de621ca0c295de14448b (commit) via 0a52859d55cf93cdd310ec678868cb4d10e80728 (commit) via d05498f44de5d3e542b2031b458d84e907604728 (commit) via 2784e9a6e36cacad4192f41a8c9044a85428ed27 (commit) via 615e1e37de053855b6bd56bae8b00d8a17133f8a (commit) via b8ed5460176838d9b714dddbc17685983b4a8b9b (commit) via e8e3c7598b82b54a7770c48a2422d5d6fa127045 (commit) from 96a4822d72478abce6dceabc816f658ba4ded0d3 (commit) - Log ----------------------------------------------------------------- commit b72a24c9eb339841a0c4b82d384a5b3ba10c9ecb Merge: 96a4822d72478abce6dceabc816f658ba4ded0d3 f102fd9735f01b4e2c9ae44f3c90d1a56d4d81f8 Author: Rishikesh K Rajak <ris...@li...> Date: Tue Mar 23 14:26:21 2010 +0530 Merge branches 'maint' and 'master' commit f102fd9735f01b4e2c9ae44f3c90d1a56d4d81f8 Author: Rishikesh K Rajak <ris...@li...> Date: Tue Mar 23 14:20:36 2010 +0530 I have tested these on MIPS architecture and reproduced infinite waiting situation after applying this patch. (with strace no issue found ex: #strace ./8-1.test) As you said there may be issues in MIPS-POSIX library. it may take some time to fix these issues or may not be fixed. However, Iâll discuss this issue with MIPS folks in different thread. ATM, my patch is not a good idea for MIPS architectures. So, after your comments I have modified my patch and tested. Here in this latest patch i did not change any thing regarding while loop. I replaced sleep() in an appropriate place. It is working fine on X86, ARM and MIPS. Signed-off-by: Naresh Kamboju < nar...@gm... > Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: testcases/network/multicast/mc_cmds/mc_cmds | 2 +- .../conformance/interfaces/sem_post/8-1.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/testcases/network/multicast/mc_cmds/mc_cmds b/testcases/network/multicast/mc_cmds/mc_cmds index d537103..f43dd95 100755 --- a/testcases/network/multicast/mc_cmds/mc_cmds +++ b/testcases/network/multicast/mc_cmds/mc_cmds @@ -127,7 +127,7 @@ for eth in $IFNAME cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts | grep 1 > /dev/null if [ $? -eq 0 ] then - end_testcase "Multicast ping disabled on this system (this is normal on post 2005 kernels)" + end_testcase "Multicast ping disabled on this system (this is normal on post year:2005 kernels)" fi # Do the ping tests: Execute ping 224.0.0.1 - Verify that the proper diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c index b2db995..86007b7 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c @@ -161,7 +161,6 @@ int main() } fprintf(stderr, "P: child_1:%d forked\n", c_1); - sleep(1); c_2 = fork(); if (c_2 == 0) { @@ -198,6 +197,9 @@ int main() //printf("val = %d\n", val); } while (val != 0); */ + + /* Synchronization required before release the lock */ + sleep(1); /* Ok, let's release the lock */ fprintf(stderr, "P: release lock\n"); sem_post(sem); hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-23 15:12:26
|
The branch, next, has been updated via 391e757d43b3ac33a4a435e319ee77b1daa6da76 (commit) via 008f0d2c45d52af059d7981685921fc53d7354bf (commit) via 7ad24180d690306e129b84d49806f9f176a28d57 (commit) via 2df915dc1da7c5d92e03856095d3f66601178e58 (commit) from c65b70531c8d383a957654ad5179cb302b405a3b (commit) - Log ----------------------------------------------------------------- commit 391e757d43b3ac33a4a435e319ee77b1daa6da76 Author: Rishikesh K Rajak <ris...@li...> Date: Tue Mar 23 20:07:34 2010 +0530 Fix the proper return for testcase. Reported By: Srinivasa R Chamarthy <sch...@li...> Signed-off By: Rishikesh K Rajak <ris...@li...> commit 008f0d2c45d52af059d7981685921fc53d7354bf Author: Rishikesh K Rajak <ris...@li...> Date: Tue Mar 23 20:05:26 2010 +0530 These warning will appear when HAVE_LIBCAP is not defined. c.c: In function âmainâ: c.c:28: warning: unused variable âretâ c.c:27: warning: unused variable âcaps2â c.c:27: warning: unused variable âcapsâ Signed-off By: Rishikesh K Rajak<ris...@li...> commit 7ad24180d690306e129b84d49806f9f176a28d57 Author: Rishikesh K Rajak <ris...@li...> Date: Tue Mar 23 14:19:01 2010 +0530 while running i found some unwanted messages and fixed those. You can Ack if it is correct fix. ===== error log ===== Running in: cp: cannot stat `/opt/ltp/testcases/bin/print_caps': No such file or directory mkfifo: cannot create fifo `caps_fifo': File exists cap_sys_admin tests ==== error log ====== Signed-off-by: Rishikesh K Rajak <ris...@li...> commit 2df915dc1da7c5d92e03856095d3f66601178e58 Author: Rishikesh K Rajak <ris...@li...> Date: Mon Mar 22 13:50:11 2010 +0530 Revert "I have found abnormal behavior of sem_post/8-1.c test case under posix." This reverts commit d40fd32af0d0ad7713b0cf6cd23daf1ee639d479. Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: .gitignore | 3 +++ .../controllers/cgroup_fj/run_cgroup_test_fj.sh | 2 +- testcases/kernel/security/filecaps/c.c | 3 ++- testcases/kernel/security/filecaps/filecapstest.sh | 5 +++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index e0ba857..660f345 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,6 @@ lib*.a /include/stamp-h1 /m4/Makefile /m4/Makefile.in +.gitattributes +.pc/ +patches/ diff --git a/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh b/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh index 7445725..672f37c 100755 --- a/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh +++ b/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh @@ -129,4 +129,4 @@ do fi done -exit 0; +exit $ret; diff --git a/testcases/kernel/security/filecaps/c.c b/testcases/kernel/security/filecaps/c.c index ee6cf05..5e1696c 100644 --- a/testcases/kernel/security/filecaps/c.c +++ b/testcases/kernel/security/filecaps/c.c @@ -24,10 +24,11 @@ int main() { + +#ifdef HAVE_LIBCAP cap_t caps, caps2; int ret; -#ifdef HAVE_LIBCAP caps = cap_from_text("cap_setpcap+ep"); caps2 = cap_from_text("cap_setpcap+ep"); ret = cap_set_proc(caps); diff --git a/testcases/kernel/security/filecaps/filecapstest.sh b/testcases/kernel/security/filecaps/filecapstest.sh index 9025b58..43582dc 100755 --- a/testcases/kernel/security/filecaps/filecapstest.sh +++ b/testcases/kernel/security/filecaps/filecapstest.sh @@ -20,8 +20,8 @@ ################################################################################ echo "Running in:" -rm -f print_caps -cp $LTPROOT/testcases/bin/print_caps . +#rm -f print_caps +#cp $LTPROOT/testcases/bin/print_caps . mkfifo caps_fifo chmod 777 caps_fifo exit_code=0 @@ -46,4 +46,5 @@ if [ $tmp -ne 0 ]; then exit_code=$tmp fi +unlink caps_fifo exit $exit_code hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-25 14:40:35
|
The branch, maint, has been updated via 566d1af5a7111408601ea6cb64218585bee8d04a (commit) via 391e757d43b3ac33a4a435e319ee77b1daa6da76 (commit) via 008f0d2c45d52af059d7981685921fc53d7354bf (commit) via b72a24c9eb339841a0c4b82d384a5b3ba10c9ecb (commit) via f102fd9735f01b4e2c9ae44f3c90d1a56d4d81f8 (commit) via 7ad24180d690306e129b84d49806f9f176a28d57 (commit) via 2df915dc1da7c5d92e03856095d3f66601178e58 (commit) via c65b70531c8d383a957654ad5179cb302b405a3b (commit) via 95a376d4e50acd0c90bf749060a1974338a082a9 (commit) via 6e3dd83d9f575d98d76b8b3f642ad6e8793dbdfc (commit) via 96a4822d72478abce6dceabc816f658ba4ded0d3 (commit) via c700433fe26d24b975bf241668a9701548e6c21d (commit) via 4d574b9f3c82a58d88b97e201ac49cddf7bc5c24 (commit) via e7ed287c04bef2108fa544b0b86629e554403970 (commit) via b80fdefbd1843484e5a3ccc3d5748fee5b4cd1f7 (commit) from 965127e99f1c3e4035a3de621ca0c295de14448b (commit) - Log ----------------------------------------------------------------- commit 566d1af5a7111408601ea6cb64218585bee8d04a Merge: b72a24c9eb339841a0c4b82d384a5b3ba10c9ecb 391e757d43b3ac33a4a435e319ee77b1daa6da76 Author: Rishikesh K Rajak <ris...@li...> Date: Thu Mar 25 20:04:07 2010 +0530 Merge commit '391e757d43b3ac33a4a435e319ee77b1daa6da76' ----------------------------------------------------------------------- Summary of changes: .gitignore | 3 + configure.ac | 1 + m4/ltp-cap.m4 | 17 +-- m4/ltp-prctl.m4 | 31 +++ .../controllers/cgroup_fj/run_cgroup_test_fj.sh | 2 +- testcases/kernel/device-drivers/rtc/Makefile | 29 +++ testcases/kernel/device-drivers/rtc/README | 29 +++ testcases/kernel/device-drivers/rtc/rtc-test.c | 218 ++++++++++++++++++++ testcases/kernel/security/Makefile | 3 + testcases/kernel/security/cap_bound/cap_bounds_r.c | 44 ++-- .../kernel/security/cap_bound/cap_bounds_rw.c | 58 +++--- .../security/cap_bound/cap_bset_inh_bounds.c | 61 +----- testcases/kernel/security/cap_bound/check_pe.c | 20 +-- testcases/kernel/security/cap_bound/dummy.c | 26 +-- .../kernel/security/cap_bound/exec_with_inh.c | 34 +--- .../kernel/security/cap_bound/exec_without_inh.c | 35 +--- testcases/kernel/security/filecaps/c.c | 45 ++++ .../kernel/security/filecaps/check_simple_capset.c | 11 +- .../kernel/security/filecaps/checkforfilecaps.sh | 40 ---- .../kernel/security/filecaps/checkforlibcap.sh | 66 ------ testcases/kernel/security/filecaps/filecapstest.sh | 19 +-- testcases/kernel/security/filecaps/inh_capped.c | 12 +- testcases/kernel/security/filecaps/print_caps.c | 2 +- .../kernel/security/filecaps/verify_caps_exec.c | 21 +-- .../conformance/interfaces/sem_getvalue/1-1.c | 21 +- .../conformance/interfaces/sem_getvalue/2-1.c | 19 +- .../conformance/interfaces/sem_getvalue/2-2.c | 59 ++---- .../conformance/interfaces/sem_getvalue/4-1.c | 18 +- .../conformance/interfaces/sem_getvalue/5-1.c | 23 +- .../conformance/interfaces/sem_post/8-1.c | 4 +- .../conformance/interfaces/sigset/8-1.c | 14 +- 31 files changed, 546 insertions(+), 439 deletions(-) create mode 100644 m4/ltp-prctl.m4 create mode 100644 testcases/kernel/device-drivers/rtc/Makefile create mode 100644 testcases/kernel/device-drivers/rtc/README create mode 100644 testcases/kernel/device-drivers/rtc/rtc-test.c create mode 100644 testcases/kernel/security/filecaps/c.c delete mode 100755 testcases/kernel/security/filecaps/checkforfilecaps.sh delete mode 100755 testcases/kernel/security/filecaps/checkforlibcap.sh diff --git a/.gitignore b/.gitignore index e0ba857..660f345 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,6 @@ lib*.a /include/stamp-h1 /m4/Makefile /m4/Makefile.in +.gitattributes +.pc/ +patches/ diff --git a/configure.ac b/configure.ac index 8a2ebe2..3dd9829 100644 --- a/configure.ac +++ b/configure.ac @@ -61,6 +61,7 @@ AC_CONFIG_SUBDIRS([ \ ]) LTP_CHECK_CAPABILITY_SUPPORT +LTP_CHECK_PRCTL_SUPPORT LTP_CHECK_CRYPTO LTP_CHECK_LINUX_PTRACE LTP_CHECK_SELINUX diff --git a/m4/ltp-cap.m4 b/m4/ltp-cap.m4 index 5f8d969..caa436f 100644 --- a/m4/ltp-cap.m4 +++ b/m4/ltp-cap.m4 @@ -23,21 +23,12 @@ dnl LTP_CHECK_CAPABILITY_SUPPORT dnl ---------------------------- dnl AC_DEFUN([LTP_CHECK_CAPABILITY_SUPPORT],[ +AH_TEMPLATE(HAVE_LIBCAP, +[Define to 1 if you have libcap-2 installed.]) AC_CHECK_HEADERS(sys/capability.h,[ - AC_CHECK_HEADERS(attr/xattr.h) LTP_CAPABILITY_SUPPORT=yes - AC_CHECK_LIB(cap,cap_free,[ - AC_CHECK_LIB(cap,cap_from_text,[ - AC_CHECK_LIB(cap,cap_set_proc,[ - AC_CHECK_LIB(cap,cap_compare,[ - CAP_LIBS="-lcap" - ]) - ]) - ]) - ]) - AC_CHECK_DECLS([CAP_BSET_DROP, CAP_BSET_READ, PR_CAPBSET_READ, cap_compare, cap_free, cap_from_text, cap_get_proc, cap_set_file, cap_set_flag, cap_set_proc, cap_to_text],[],[],[dnl -#include <sys/capability.h> -]) dnl AC_CHECK_DECLS + AC_CHECK_LIB(cap,cap_compare,[AC_DEFINE(HAVE_LIBCAP) CAP_LIBS="-lcap"], [CAP_LIBS=""]) + AC_CHECK_PROG(HAVE_SETCAP,setcap,setcap,false) ])] AC_SUBST(CAP_LIBS) ) diff --git a/m4/ltp-prctl.m4 b/m4/ltp-prctl.m4 new file mode 100644 index 0000000..51edb08 --- /dev/null +++ b/m4/ltp-prctl.m4 @@ -0,0 +1,31 @@ +dnl +dnl Copyright (c) Cisco Systems Inc., 2009 +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +dnl the GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl Author: Garrett Cooper <yan...@gm...> +dnl + +dnl +dnl LTP_CHECK_PRCTL_SUPPORT +dnl ---------------------------- +dnl +AC_DEFUN([LTP_CHECK_PRCTL_SUPPORT],[ +AC_CHECK_HEADERS(sys/prctl.h,[ + AC_CHECK_DECLS([PR_CAPBSET_DROP, PR_CAPBSET_READ], [],[],[dnl +#include <sys/prctl.h> +]) dnl AC_CHECK_DECLS +])] +) diff --git a/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh b/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh index 7445725..672f37c 100755 --- a/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh +++ b/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh @@ -129,4 +129,4 @@ do fi done -exit 0; +exit $ret; diff --git a/testcases/kernel/device-drivers/rtc/Makefile b/testcases/kernel/device-drivers/rtc/Makefile new file mode 100644 index 0000000..9b776ca --- /dev/null +++ b/testcases/kernel/device-drivers/rtc/Makefile @@ -0,0 +1,29 @@ +# +# Copyright (c) Larsen & Toubro Infotech Ltd., 2010 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# + +CFLAGS = -O2 -Wall -I ../../../../include/ +LIBS = -L ../../../../lib/ -lltp +SRC = rtc-test.c + + +all: $(SRC) + $(CC) $(SRC) $(CFLAGS) $(LIBS) -o rtc-test + +clean: + rm -f rtc-test diff --git a/testcases/kernel/device-drivers/rtc/README b/testcases/kernel/device-drivers/rtc/README new file mode 100644 index 0000000..3094aa7 --- /dev/null +++ b/testcases/kernel/device-drivers/rtc/README @@ -0,0 +1,29 @@ +rtc-test.c : Test the Real Time Clock driver + +Tests supported as of now +-------------------------- +1. Read test : This reads the time/date from the RTC + ioctls tested :- RTC_RD_TIME. + +2. Alarm Test: Sets the alarm to 5 seconds in future and makes sure it rings. + ioctls tested :- RTC_ALM_SET, RTC_ALM_READ, RTC_AIE_ON, RTC_AIE_OFF. + +3. Update interrupts test : Sets Update interrupts enable on, waits for five + interrupts and then turns it off. + ioctls tested :- RTC_UIE_ON, RTC_UIE_OFF. + + +How to Build +------------ +You have to build the complete LTP package before trying to build these tests. +After building the complete LTP sources enter this directory and issue a 'make'. + +How to Run +---------- + + The tests assume the rtc device node to be "/dev/rtc". If you have a +different node run the test with the name of the node as a parameter. + +Eg. If your node is /dev/rtc0, then run the test as + + $ ./rtc-test /dev/rtc0 diff --git a/testcases/kernel/device-drivers/rtc/rtc-test.c b/testcases/kernel/device-drivers/rtc/rtc-test.c new file mode 100644 index 0000000..a62b033 --- /dev/null +++ b/testcases/kernel/device-drivers/rtc/rtc-test.c @@ -0,0 +1,218 @@ +/* rtc-test.c + * + * Tests for the Real Time Clock driver. + * + * Copyright (c) Larsen & Toubro Infotech Ltd., 2010 + * + * Author : Silesh C V <Sil...@ln...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "test.h" +#include <sys/ioctl.h> +#include <stdio.h> +#include <stdlib.h> +#include <fcntl.h> +#include <unistd.h> +#include <linux/rtc.h> +#include <errno.h> +#include <time.h> + +int rtc_fd = -1; +char *TCID = "rtc01"; +int TST_TOTAL = 3; + + +/* Read and Alarm Tests : Read test reads the Date/time from RTC + * while Alarm test, sets the alarm to 5 seconds in future and + * waits for it to ring.The ioctls tested in these tests are + * RTC_RD_TIME, RTC_ALM_SET, RTC_ALM_READ, RTC_AIE_OFF */ + +void read_alarm_test(void) +{ + struct rtc_time rtc_tm; + int ret; + unsigned long data; + fd_set rfds; + struct timeval tv; + + tst_resm(TINFO, "RTC READ TEST:"); + + /*Read RTC Time*/ + ret = ioctl(rtc_fd, RTC_RD_TIME, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_RD_TIME ioctl failed"); + return; + } + + tst_resm(TPASS, "RTC READ TEST Passed"); + + tst_resm(TINFO, "Current RTC date/time is %d-%d-%d, %02d:%02d:%02d.", + rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900, + rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); + + tst_resm(TINFO, "RTC ALARM TEST :"); + + /*set Alarm to 5 Seconds*/ + rtc_tm.tm_sec += 5; + if (rtc_tm.tm_sec >= 60) { + rtc_tm.tm_sec %= 60; + rtc_tm.tm_min++; + } + + if (rtc_tm.tm_min == 60) { + rtc_tm.tm_min = 0; + rtc_tm.tm_hour++; + } + + if (rtc_tm.tm_hour == 24) + rtc_tm.tm_hour = 0; + + ret = ioctl(rtc_fd, RTC_ALM_SET, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_ALM_SET ioctl failed"); + return; + } + + /*Read current alarm time*/ + ret = ioctl(rtc_fd, RTC_ALM_READ, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_ALM_READ ioctl failed"); + return; + } + + tst_resm(TINFO, "Alarm time set to %02d:%02d:%02d.", + rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); + /* Enable alarm interrupts */ + ret = ioctl(rtc_fd, RTC_AIE_ON, 0); + if (ret == -1) { + tst_resm(TINFO, "RTC_AIE_ON ioctl failed"); + return; + } + + tst_resm(TINFO, "Waiting 5 seconds for the alarm..."); + + tv.tv_sec = 6;/*set 6 seconds as the time out*/ + tv.tv_usec = 0; + + FD_ZERO(&rfds); + FD_SET(rtc_fd, &rfds); + + ret = select(rtc_fd + 1, &rfds, NULL, NULL, &tv);/*wait for alarm*/ + + if (ret == -1) { + tst_resm(TFAIL, "select failed"); + return; + } else if (ret) { + ret = read(rtc_fd, &data, sizeof(unsigned long)); + if (ret == -1) { + tst_resm(TFAIL, "read failed"); + return; + } + tst_resm(TINFO, "Alarm rang."); + } else { + tst_resm(TFAIL, "Timed out waiting for the alarm"); + return; + } + + /* Disable alarm interrupts */ + ret = ioctl(rtc_fd, RTC_AIE_OFF, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_AIE_OFF ioctl failed"); + return; + } + tst_resm(TPASS, "RTC ALARM TEST Passed"); +} + +/* Update_interrupts_test :Once the Update interrupts is enabled, + * the RTC gives interrupts (1/sec) on the interrupts line(if the rtc + * has one). This is tested by enabling the update interrupts + * and then waiting for 5 interrupts.*/ + +void update_interrupts_test(void) +{ + int ret, i; + unsigned long data; + fd_set rfds; + struct timeval tv; + + tst_resm(TINFO, "RTC UPDATE INTERRUPTS TEST :"); + /*Turn on update interrupts*/ + ret = ioctl(rtc_fd, RTC_UIE_ON, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_UIE_ON ioctl failed"); + return; + } + + tst_resm(TINFO, "Waiting for 5 update interrupts..."); + for (i = 1; i < 6; i++) { + + tv.tv_sec = 2; /*2 sec time out for each interrupt*/ + tv.tv_usec = 0; + + FD_ZERO(&rfds); + FD_SET(rtc_fd, &rfds); + + ret = select(rtc_fd + 1, &rfds, NULL, NULL, &tv); + if (ret == -1) { + tst_resm(TFAIL, "select failed"); + return; + } else if (ret) { + ret = read(rtc_fd, &data, sizeof(unsigned long)); + if (ret == -1) { + tst_resm(TFAIL, "read failed"); + return; + } + tst_resm(TINFO, "Update interrupt %d", i); + } else { + tst_resm(TFAIL, + "Timed out waiting for the update interrupt"); + return; + } + } + + /* Turn off update interrupts */ + ret = ioctl(rtc_fd, RTC_UIE_OFF, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_UIE_OFF ioctl failed"); + return; + } + tst_resm(TPASS, "RTC UPDATE INTERRUPTS TEST Passed"); +} + +int main(int argc, char **argv) +{ + char *rtc_dev = "/dev/rtc"; + + if (argc == 2) + rtc_dev = argv[1]; + + rtc_fd = open(rtc_dev, O_RDONLY); + + if (rtc_fd < 0) + tst_brkm(TBROK | TERRNO, tst_exit, "couldn't open %s", rtc_dev); + + /*Read and alarm tests*/ + read_alarm_test(); + + /*Update interrupts test*/ + update_interrupts_test(); + + close(rtc_fd); + + tst_resm(TINFO, "RTC Tests Done!"); + return 0; +} diff --git a/testcases/kernel/security/Makefile b/testcases/kernel/security/Makefile index a23ce8f..52b8d06 100644 --- a/testcases/kernel/security/Makefile +++ b/testcases/kernel/security/Makefile @@ -29,6 +29,9 @@ include $(top_srcdir)/include/mk/env_pre.mk ifeq ($(strip $(CAP_LIBS)),) FILTER_OUT_DIRS := cap_bound filecaps endif +ifeq ($(HAVE_SETCAP),false) +FILTER_OUT_DIRS += filecaps +endif # XXX (garrcoop): avoid compilation failures on RHEL 5.4, as reported by # Mitani-san, because of policy versioning issues... diff --git a/testcases/kernel/security/cap_bound/cap_bounds_r.c b/testcases/kernel/security/cap_bound/cap_bounds_r.c index 917d889..0b1c5b3 100644 --- a/testcases/kernel/security/cap_bound/cap_bounds_r.c +++ b/testcases/kernel/security/cap_bound/cap_bounds_r.c @@ -32,21 +32,6 @@ #include <sys/prctl.h> #include <test.h> -#ifndef CAP_LAST_CAP -#warning out-of-date capability.h does not define CAP_LAST_CAP -#define CAP_LAST_CAP 28 /* be ultra-conservative */ -#endif - -#ifndef CAP_BSET_READ -#warning CAP_BSET_READ not defined -#define CAP_BSET_READ 23 -#endif - -#ifndef CAP_BSET_DROP -#warning CAP_BSET_DROP not defined -#define CAP_BSET_DROP 24 -#endif - char *TCID = "cap_bounds_r"; int TST_TOTAL=1; @@ -59,17 +44,27 @@ int main(int argc, char *argv[]) int i; for (i=0; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != 1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, %d) returned %d\n", i, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, %d) returned %d\n", i, ret); if (ret == -1) tst_resm(TINFO, "errno was %d\n", errno); tst_exit(); } } - ret = prctl(CAP_BSET_READ, -1); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, -1); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, -1) returned %d\n", -1, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, -1) returned %d\n", ret); tst_exit(); } @@ -79,13 +74,18 @@ int main(int argc, char *argv[]) * testing... So let's take an insanely high value */ #define INSANE 63 #define max(x,y) (x > y ? x : y) - ret = prctl(CAP_BSET_READ, max(INSANE,CAP_LAST_CAP+1)); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, max(INSANE,CAP_LAST_CAP+1)); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, %d) returned %d\n", CAP_LAST_CAP+1, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, %d) returned %d\n", CAP_LAST_CAP+1, ret); tst_resm(TINFO, " %d is CAP_LAST_CAP+1 and should not exist\n", CAP_LAST_CAP+1); tst_exit(); } - tst_resm(TPASS, "CAP_BSET_READ tests passed\n"); + tst_resm(TPASS, "PR_CAPBSET_READ tests passed\n"); #else tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif diff --git a/testcases/kernel/security/cap_bound/cap_bounds_rw.c b/testcases/kernel/security/cap_bound/cap_bounds_rw.c index 9129c4e..827a305 100644 --- a/testcases/kernel/security/cap_bound/cap_bounds_rw.c +++ b/testcases/kernel/security/cap_bound/cap_bounds_rw.c @@ -31,21 +31,6 @@ #include <sys/prctl.h> #include <test.h> -#ifndef CAP_LAST_CAP -#warning out-of-date capability.h does not define CAP_LAST_CAP -#define CAP_LAST_CAP 28 /* be ultra-conservative */ -#endif - -#ifndef CAP_BSET_READ -#warning CAP_BSET_READ not defined -#define CAP_BSET_READ 23 -#endif - -#ifndef CAP_BSET_DROP -#warning CAP_BSET_DROP not defined -#define CAP_BSET_DROP 24 -#endif - char *TCID = "cap_bounds_rw"; int TST_TOTAL=1; @@ -57,7 +42,12 @@ int check_remaining_caps(int lastdropped) int ret; for (i=0; i <= lastdropped; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret == -1) { tst_resm(TBROK, "Failed to read bounding set during sanity check\n"); tst_exit(); @@ -68,7 +58,12 @@ int check_remaining_caps(int lastdropped) } } for (; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret == -1) { tst_resm(TBROK, "Failed to read bounding set during sanity check\n"); tst_exit(); @@ -86,9 +81,14 @@ int main(int argc, char *argv[]) int ret = 1; int i; - ret = prctl(CAP_BSET_DROP, -1); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_READ, -1); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, -1) returned %d\n", ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, -1) returned %d\n", ret); tst_exit(); } /* Ideally I'd check CAP_LAST_CAP+1, but userspace @@ -97,16 +97,26 @@ int main(int argc, char *argv[]) * testing... So let's take an insanely high value */ #define INSANE 63 #define max(x,y) (x > y ? x : y) - ret = prctl(CAP_BSET_DROP, max(INSANE,CAP_LAST_CAP+1)); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_DROP, max(INSANE,CAP_LAST_CAP+1)); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, %d) returned %d\n", max(INSANE, CAP_LAST_CAP+1), ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, %d) returned %d\n", max(INSANE, CAP_LAST_CAP+1), ret); tst_resm(TINFO, " %d is should not exist\n", max(INSANE, CAP_LAST_CAP+1)); tst_exit(); } for (i=0; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_DROP, i); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_DROP, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != 0) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, %d) returned %d\n", i, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, %d) returned %d\n", i, ret); if (ret == -1) tst_resm(TINFO, "errno was %d\n", errno); tst_exit(); @@ -122,6 +132,6 @@ int main(int argc, char *argv[]) tst_exit(); } } - tst_resm(TPASS, "CAP_BSET_DROP tests passed\n"); + tst_resm(TPASS, "PR_CAPBSET_DROP tests passed\n"); tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c b/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c index 894e0a5..c6c34c0 100644 --- a/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c +++ b/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c @@ -39,9 +39,11 @@ int TST_TOTAL=2; int errno; +#if HAVE_SYS_CAPABILITY_H +#if HAVE_DECL_PR_CAPBSET_READ && HAVE_DECL_PR_CAPBSET_DROP +#ifdef HAVE_LIBCAP int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H int ret = 1; cap_value_t v[1]; cap_flag_value_t f; @@ -49,12 +51,7 @@ int main(int argc, char *argv[]) /* We pick a random capability... let's use CAP_SYS_ADMIN */ /* make sure we have the capability now */ -#if HAVE_DECL_CAP_BSET_READ - ret = prctl(CAP_BSET_READ, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_READ, CAP_SYS_ADMIN); if (ret != 1) { tst_resm(TBROK, "Not starting with CAP_SYS_ADMIN\n"); tst_exit(); @@ -66,47 +63,23 @@ int main(int argc, char *argv[]) tst_resm(TBROK, "Failed to create cap_sys_admin+i cap_t (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#else - errno = ENOSYS; - ret = -1; -#endif if (ret) { tst_resm(TBROK, "Failed to cap_set_proc with cap_sys_admin+i (ret %d errno %d)\n", ret, errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - errno = ENOSYS; - ret = -1; -#endif -#else - errno = ENOSYS; - ret = -1; -#endif if (ret || f != CAP_SET) { tst_resm(TBROK, "Failed to add CAP_SYS_ADMIN to pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -114,18 +87,8 @@ int main(int argc, char *argv[]) } /* test 1: is CAP_SYS_ADMIN still in pI? */ -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - errno = ENOSYS; - ret = -1; -#endif -#else - errno = ENOSYS; - ret = -1; -#endif if (ret || f != CAP_SET) { tst_resm(TFAIL, "CAP_SYS_ADMIN not in pI after dropping from bounding set\n"); tst_exit(); @@ -144,24 +107,24 @@ int main(int argc, char *argv[]) tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(tmpcap); -#endif /* test 2: can we put it back in pI? */ -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#endif if (ret == 0) { /* success means pI was not bounded by X */ tst_resm(TFAIL, "Managed to put CAP_SYS_ADMIN back into pI though not in X\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif tst_resm(TPASS, "Couldn't put CAP_SYS_ADMIN back into pI when not in bounding set\n"); -#else +#else /* HAVE_LIBCAP */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* HAVE_DECL_PR_CAPBSET_READ && HAVE_DECL_PR_CAPBSET_DROP */ + tst_resm(TCONF, "System doesn't have CAPBSET prctls."); +#endif +#else /* HAVE_SYS_CAPABILITY_H */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/check_pe.c b/testcases/kernel/security/cap_bound/check_pe.c index 2e0451a..f621e70 100644 --- a/testcases/kernel/security/cap_bound/check_pe.c +++ b/testcases/kernel/security/cap_bound/check_pe.c @@ -40,9 +40,10 @@ int TST_TOTAL=1; int errno; +#if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H int ret = 1; cap_flag_value_t f; cap_t cur; @@ -58,26 +59,14 @@ int main(int argc, char *argv[]) tst_exit(); } -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_EFFECTIVE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "cap_get_flag failed (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif if (n == 1) { if (f == CAP_SET) { tst_resm(TPASS, "cap is in pE\n"); @@ -91,8 +80,11 @@ int main(int argc, char *argv[]) tst_exit(); } tst_resm(TFAIL, "Cap is in pE\n"); -#else +#else /* libcap */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* capability_h */ + tst_resm(TCONF, "System doesn't have sys/capability.h"); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/dummy.c b/testcases/kernel/security/cap_bound/dummy.c index ad65007..e882940 100644 --- a/testcases/kernel/security/cap_bound/dummy.c +++ b/testcases/kernel/security/cap_bound/dummy.c @@ -5,31 +5,21 @@ #include <sys/capability.h> #endif -#define END \ - printf("System doesn't support POSIX capabilities.\n"); \ - return 1 - int main() { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP cap_t cur; -#if HAVE_DECL_CAP_SET_PROC -#if HAVE_DECL_CAP_FROM_TEXT cur = cap_from_text("all=eip"); cap_set_proc(cur); -#else - END; -#endif -#else - END; -#endif -#if HAVE_DECL_CAP_FREE cap_free(cur); -#else - END; + return 0; +#else /* libcap */ + printf("System doesn't support POSIX capabilities.\n"); + return 1; #endif -#else - END; +#else /* capability_h */ + printf("System doesn't support sys/capability.h\n"); + return 1; #endif - return 0; } diff --git a/testcases/kernel/security/cap_bound/exec_with_inh.c b/testcases/kernel/security/cap_bound/exec_with_inh.c index 21c60fd..123f665 100644 --- a/testcases/kernel/security/cap_bound/exec_with_inh.c +++ b/testcases/kernel/security/cap_bound/exec_with_inh.c @@ -42,59 +42,34 @@ int errno; int main(int argc, char *argv[]) { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int ret = 1; cap_flag_value_t f; cap_t cur = 0; /* Make sure CAP_SYS_ADMIN is in pI */ -#if HAVE_DECL_CAP_FROM_TEXT cur = cap_from_text("all=eip"); -#endif if (!cur) { tst_resm(TBROK, "Failed to create cap_sys_admin+i cap_t (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "Failed to cap_set_proc with cap_sys_admin+i (ret %d errno %d)\n", ret, errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (ret || f != CAP_SET) { tst_resm(TBROK, "Failed to add CAP_SYS_ADMIN to pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -104,8 +79,11 @@ int main(int argc, char *argv[]) /* execute "check_pe 1" */ execl("check_pe", "check_pe", "1", NULL); tst_resm(TBROK, "Failed to execute check_pe (errno %d)\n", errno); -#else +#else /* HAVE_LIBCAP */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* HAVE_SYS_CAPABILITY_H */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/exec_without_inh.c b/testcases/kernel/security/cap_bound/exec_without_inh.c index 81216f3..df3c4d9 100644 --- a/testcases/kernel/security/cap_bound/exec_without_inh.c +++ b/testcases/kernel/security/cap_bound/exec_without_inh.c @@ -42,39 +42,20 @@ int errno; int main(int argc, char *argv[]) { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int ret = 1; cap_flag_value_t f; cap_value_t v[1]; cap_t cur; /* Make sure CAP_SYS_ADMIN is not in pI */ -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (f == CAP_SET) { v[0] = CAP_SYS_ADMIN; -#if HAVE_DECL_CAP_SET_FLAG ret = cap_set_flag(cur, CAP_INHERITABLE, 1, v, CAP_CLEAR); -#else - ret = -1; - errno = ENOSYS; -#endif -#if HAVE_DECL_CAP_SET_PROC if (!ret) ret = cap_set_proc(cur); -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "Failed to drop cap_sys_admin from pI\n"); tst_exit(); @@ -83,17 +64,10 @@ int main(int argc, char *argv[]) tst_brkm(TBROK | TERRNO, tst_exit, "Failed to add \ CAP_SYS_ADMIN to pI"); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -103,8 +77,11 @@ int main(int argc, char *argv[]) /* execute "check_pe 0" */ execl("check_pe", "check_pe", "0", NULL); tst_resm(TBROK, "Failed to execute check_pe (errno %d)\n", errno); -#else +#else /* libcap */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* capability_h */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/filecaps/c.c b/testcases/kernel/security/filecaps/c.c new file mode 100644 index 0000000..5e1696c --- /dev/null +++ b/testcases/kernel/security/filecaps/c.c @@ -0,0 +1,45 @@ +/******************************************************************************/ +/* */ +/* Copyright (c) International Business Machines Corp., 2008 */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +/* the GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/******************************************************************************/ + + +#include <stdio.h> +#include <sys/capability.h> + +int main() +{ + +#ifdef HAVE_LIBCAP + cap_t caps, caps2; + int ret; + + caps = cap_from_text("cap_setpcap+ep"); + caps2 = cap_from_text("cap_setpcap+ep"); + ret = cap_set_proc(caps); + ret = cap_compare(caps, caps2); + printf("Caps were %sthe same\n", ret ? "not " : ""); + + cap_free(caps); + cap_free(caps2); + return ret; +#else + printf("System doesn't support full POSIX capabilities.\n"); + return 1; +#endif +} diff --git a/testcases/kernel/security/filecaps/check_simple_capset.c b/testcases/kernel/security/filecaps/check_simple_capset.c index 7851e01..6c7790d 100644 --- a/testcases/kernel/security/filecaps/check_simple_capset.c +++ b/testcases/kernel/security/filecaps/check_simple_capset.c @@ -27,28 +27,21 @@ int main() { -#if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP cap_t caps, caps2; int ret; -#if HAVE_DECL_CAP_FROM_TEXT && HAVE_DECL_CAP_SET_PROC && HAVE_DECL_CAP_COMPARE caps = cap_from_text("cap_setpcap+ep"); caps2 = cap_from_text("cap_setpcap+ep"); ret = cap_set_proc(caps); ret = cap_compare(caps, caps2); -#else - printf("System doesn't support full POSIX capabilities.\n"); - return 1; -#endif printf("Caps were %sthe same\n", ret ? "not " : ""); -#if HAVE_DECL_CAP_FREE cap_free(caps); cap_free(caps2); -#endif return ret; #else - printf("System doesn't support POSIX capabilities.\n"); + printf("System doesn't support full POSIX capabilities.\n"); return 1; #endif } diff --git a/testcases/kernel/security/filecaps/checkforfilecaps.sh b/testcases/kernel/security/filecaps/checkforfilecaps.sh deleted file mode 100755 index 757d409..0000000 --- a/testcases/kernel/security/filecaps/checkforfilecaps.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -################################################################################ -## ## -## Copyright (c) International Business Machines Corp., 2008 ## -## ## -## This program is free software; you can redistribute it and#or modify ## -## it under the terms of the GNU General Public License as published by ## -## the Free Software Foundation; either version 2 of the License, or ## -## (at your option) any later version. ## -## ## -## This program is distributed in the hope that it will be useful, but ## -## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## -## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## -## for more details. ## -## ## -## You should have received a copy of the GNU General Public License ## -## along with this program; if not, write to the Free Software ## -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## -## ## -################################################################################ - -if ! check_simple_capset; then - echo Posix capabilities not compiled into the kernel. Please - echo modprobe capability or recompile your kernel with - echo CONFIG_SECURITY_CAPABILITIES=y. - exit 1 -fi - -touch testme -setcap cap_sys_admin=ip testme -ret=$? -rm -f testme -if [ $ret -ne 0 ]; then - echo File capabilities not compiled into kernel. Please - echo make sure your kernel is compiled with - echo CONFIG_SECURITY_FILE_CAPABILITIES=y. - exit 1 -fi - -exit 0 diff --git a/testcases/kernel/security/filecaps/checkforlibcap.sh b/testcases/kernel/security/filecaps/checkforlibcap.sh deleted file mode 100755 index cc7642e..0000000 --- a/testcases/kernel/security/filecaps/checkforlibcap.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh -################################################################################ -## ## -## Copyright (c) International Business Machines Corp., 2008 ## -## ## -## This program is free software; you can redistribute it and#or modify ## -## it under the terms of the GNU General Public License as published by ## -## the Free Software Foundation; either version 2 of the License, or ## -## (at your option) any later version. ## -## ## -## This program is distributed in the hope that it will be useful, but ## -## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## -## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## -## for more details. ## -## ## -## You should have received a copy of the GNU General Public License ## -## along with this program; if not, write to the Free Software ## -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## -## ## -################################################################################ - -if [ "x$CC" = "x" ]; then - export CC=gcc -fi -yesno=0 -if [ "$1" = "yesno" ]; then - yesno=1 -fi - -SETCAP=`which setcap` -if [ -z "${SETCAP}" ]; then - ret=1 -else - ret=0 -fi - -if [ $ret -eq 0 ]; then - #also test for -lcap - $CC -o check_simple_capset check_simple_capset.c -lcap \ - 2>/dev/null - - ret=$? -fi - -if [ $ret -eq 0 ]; then - #also test for xattr - $CC -o check_xattr check_xattr.c - ret=$? - if [ $ret -ne 0 ]; then - echo "Please install xattr headers" - fi -fi - -if [ $ret -ne 0 ]; then - if [ $yesno -eq 1 ]; then - echo no - else - exit 1 - fi -else - if [ $yesno -eq 1 ]; then - echo yes - else - exit 0 - fi -fi diff --git a/testcases/kernel/security/filecaps/filecapstest.sh b/testcases/kernel/security/filecaps/filecapstest.sh index 149cbc1..43582dc 100755 --- a/testcases/kernel/security/filecaps/filecapstest.sh +++ b/testcases/kernel/security/filecaps/filecapstest.sh @@ -19,23 +19,9 @@ ## ## ################################################################################ -checkforlibcap.sh -ret=$? -if [ $ret -ne 0 ]; then - echo "Filecaps 0 CONF : System doesn't support execution of the test" - echo setcap not installed. Please install libcap-2.11 or newer from - echo ftp://ftp.kernel.org/pub/linux/libs/security/linux-privs/libcap2 - exit 0 -fi -checkforfilecaps.sh -ret=$? -if [ $ret -ne 0 ]; then - echo "Filecaps 0 CONF : File capabilities not available" - exit 0 -fi - echo "Running in:" -cp $LTPROOT/testcases/bin/print_caps . +#rm -f print_caps +#cp $LTPROOT/testcases/bin/print_caps . mkfifo caps_fifo chmod 777 caps_fifo exit_code=0 @@ -60,4 +46,5 @@ if [ $tmp -ne 0 ]; then exit_code=$tmp fi +unlink caps_fifo exit $exit_code diff --git a/testcases/kernel/security/filecaps/inh_capped.c b/testcases/kernel/security/filecaps/inh_capped.c index 513fcb9..794e8b1 100644 --- a/testcases/kernel/security/filecaps/inh_capped.c +++ b/testcases/kernel/security/filecaps/inh_capped.c @@ -34,21 +34,17 @@ char *TCID = "filecaps"; int TST_TOTAL=1; +#ifdef HAVE_LIBCAP void debug_print_caps(char *when) { -#ifdef DEBUG char buf[2000]; tst_resm(TINFO, "%s", when); -#if HAVE_DECL_SET_CAP_TO_TEXT snprintf(buf, 2000, "%s", cap_to_text(cap_get_proc(), NULL)); -#endif tst_resm(TINFO, "%s", buf); -#endif } int set_caps_from_text(char *capstr) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_SET_CAP_SET_PROC && HAVE_DECL_SET_CAP_FREE cap_t caps = cap_from_text(capstr); int ret; @@ -59,14 +55,12 @@ int set_caps_from_text(char *capstr) ret = cap_set_proc(caps); cap_free(caps); return ret; -#else - return -1; -#endif } +#endif int main() { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_SET_CAPS_FROM_TEXT +#ifdef HAVE_LIBCAP int ret; debug_print_caps("start"); diff --git a/testcases/kernel/security/filecaps/print_caps.c b/testcases/kernel/security/filecaps/print_caps.c index 188856e..f0e9bce 100644 --- a/testcases/kernel/security/filecaps/print_caps.c +++ b/testcases/kernel/security/filecaps/print_caps.c @@ -40,7 +40,7 @@ int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_GET_PROC && HAVE_DECL_CAP_TO_TEXT +#ifdef HAVE_LIBCAP cap_t cap = cap_get_proc(); int fd; int seqno = 0; diff --git a/testcases/kernel/security/filecaps/verify_caps_exec.c b/testcases/kernel/security/filecaps/verify_caps_exec.c index 16fcc0f..5250007 100644 --- a/testcases/kernel/security/filecaps/verify_caps_exec.c +++ b/testcases/kernel/security/filecaps/verify_caps_exec.c @@ -60,20 +60,18 @@ void usage(char *me) #define DROP_PERMS 0 #define KEEP_PERMS 1 +#ifdef HAVE_LIBCAP void print_my_caps() { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_GET_PROC && HAVE_DECL_CAP_TO_TEXT cap_t cap = cap_get_proc(); char *txt = cap_to_text(cap, NULL); tst_resm(TINFO, "\ncaps are %s\n", txt); cap_free(cap); cap_free(txt); -#endif } int drop_root(int keep_perms) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_FROM_TEXT && HAVE_DECL_CAP_SET_PROC int ret; if (keep_perms) @@ -89,15 +87,11 @@ int drop_root(int keep_perms) cap_set_proc(cap); cap_free(cap); } -#else - tst_resm(TCONF, "System doesn't have full POSIX capabilities support.\n"); -#endif tst_exit(); } int perms_test(void) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_SET_FILE int ret; cap_t cap; @@ -118,9 +112,6 @@ int perms_test(void) cap_free(cap); return ret; -#else - return -1; -#endif } #define FIFOFILE "caps_fifo" @@ -160,7 +151,6 @@ void read_from_fifo(char *buf) close(fd); } -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_COMPARE && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_TO_TEXT int fork_drop_and_exec(int keepperms, cap_t expected_caps) { @@ -219,12 +209,9 @@ int fork_drop_and_exec(int keepperms, cap_t expected_caps) } return ret; } -#endif int caps_actually_set_test(void) { - -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_PR_CAPBSET_READ int whichcap, finalret = 0, ret; cap_t fcap, pcap, cap_fullpi; cap_value_t capvalue[1]; @@ -399,17 +386,15 @@ int caps_actually_set_test(void) cap_free(cap_fullpi); return finalret; -#else - return -1; -#endif } +#endif int main(int argc, char *argv[]) { +#ifdef HAVE_LIBCAP if (argc < 2) usage(argv[0]); -#if HAVE_SYS_CAPABILITY_H int ret = 0; switch(atoi(argv[1])) { diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c index 767f1b0..c0746c0 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c @@ -10,9 +10,7 @@ * This test case will call sem_getvalue to update the location referenced * by the semaphpre without effecting the state of the semaphore. The * updated value represents the actual semaphore value when it was called. -*/ - - + */ #include <stdio.h> #include <errno.h> @@ -20,29 +18,29 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "1-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } @@ -50,7 +48,8 @@ int main() { /* printf("Current value is: %d\n", val); */ - if (val == 1 ) { + + if (val == 1) { puts("TEST PASSED"); sem_close(mysemp); sem_unlink(semname); diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c index ac19af8..06814fb 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c @@ -8,8 +8,7 @@ /* * When semaphore is locked, then the value returned by sem_getvalue is zero. -*/ - + */ #include <stdio.h> #include <errno.h> @@ -17,35 +16,35 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "2-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } /* Lock Semaphore */ - if (sem_trywait(mysemp) == -1 ) { + if (sem_trywait(mysemp) == -1) { perror(ERROR_PREFIX "trywait"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) < 0 ) { + if (sem_getvalue(mysemp, &val) < 0) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c index 5918ceb..9989e48 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c @@ -83,18 +83,15 @@ /*************************** Test case ***********************************/ /******************************************************************************/ -void * threaded ( void * arg ) +void *threaded(void * arg) { int ret; - do - { + do { ret = sem_wait( arg ); - } - while ( ( ret != 0 ) && ( errno == EINTR ) ); + } while (( ret != 0 ) && (errno == EINTR)); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to wait for the semaphore" ); } @@ -103,7 +100,7 @@ void * threaded ( void * arg ) /* The main test function. */ -int main( int argc, char * argv[] ) +int main(int argc, char *argv[]) { int ret, val; sem_t sem; @@ -113,71 +110,61 @@ int main( int argc, char * argv[] ) output_init(); /* Initialize semaphore */ - ret = sem_init( &sem, 0, 0 ); + ret = sem_init(&sem, 0, 0); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to init semaphore" ); } /* Create the thread */ - ret = pthread_create( &th, NULL, threaded, &sem ); + ret = pthread_create(&th, NULL, threaded, &sem); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( ret, "Failed to create the thread" ); } /* Sleep 1 sec so the thread enters the sem_wait call */ - sleep( 1 ); + sleep(1); /* Check value */ - ret = sem_getvalue( &sem, &val ); + ret = sem_getvalue(&sem, &val); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to get semaphore value" ); } - if ( ( val != 0 ) && ( val != -1 ) ) - { - output( "Val: %d\n", val ); - FAILED( "Semaphore count is neither 0 nor # of waiting processes" ); + if ((val != 0) && (val != -1)) { + output("Val: %d\n", val ); + FAILED("Semaphore count is neither 0 nor # of waiting processes"); } /* Post the semaphore */ - ret = sem_post( &sem ); + ret = sem_post(&sem); - if ( ret != 0 ) - { - UNRESOLVED( errno, "Failed to post the semaphore" ); + if (ret != 0) { + UNRESOLVED(errno, "Failed to post the semaphore"); } /* Join the thread */ - ret = pthread_join( th, NULL ); + ret = pthread_join(th, NULL); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( ret, "Failed to join the thread" ); } - /* Destroy the semaphore */ - ret = sem_destroy( &sem ); + ret = sem_destroy(&sem); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to sem_destroy" ); } /* Test passed */ #if VERBOSE > 0 - output( "Test passed\n" ); + output("Test passed\n"); #endif PASSED; } - - diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c index 0774acb..2507fd3 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c @@ -9,9 +9,7 @@ /* * Upon successful completion of calling sem_getvalue, it shall return a value * of zero. -*/ - - + */ #include <stdio.h> #include <errno.h> @@ -19,29 +17,29 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "4-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) != 0 ) { + if (sem_getvalue(mysemp, &val) != 0) { puts("TEST FAILED"); return PTS_FAIL; } else { diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c index c77b19c..1f17f5f 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c @@ -9,8 +9,7 @@ /* * This test case verifies that calling sem_getvalue doesn't change the * state of the semaphore. -*/ - + */ #include <stdio.h> #include <errno.h> @@ -18,40 +17,40 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "5-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[20]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 4); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } - if ( sem_trywait(mysemp) == -1 ) { + if (sem_trywait(mysemp) == -1) { perror(ERROR_PREFIX "sem_trywait"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } @@ -60,7 +59,7 @@ int main() { printf("Current value is: %d\n", val); */ - if (val == 3 ) { + if (val == 3) { puts("TEST PASSED"); sem_close(mysemp); sem_unlink(semname); diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c index b2db995..86007b7 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c @@ -161,7 +161,6 @@ int main() } fprintf(stderr, "P: child_1:%d forked\n", c_1); - sleep(1); c_2 = fork(); if (c_2 == 0) { @@ -198,6 +197,9 @@ int main() //printf("val = %d\n", val); } while (val != 0); */ + + /* Synchronization required before release the lock */ + sleep(1); /* Ok, let's release the lock */ fprintf(stderr, "P: release lock\n"); sem_post(sem); diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c index f344b19..22b1f40 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c @@ -15,12 +15,22 @@ #include <signal.h> #include <stdio.h> #include <stdlib.h> +#include <errno.h> +#include <string.h> #include "posixtest.h" -int main() +int main(void) { + sigset_t st; + sigemptyset(&st); + sigaddset(&st, SIGCHLD); - if (sigset(SIGCHLD,SIG_HOLD) != SIG_HOLD) { + if (sigprocmask(SIG_BLOCK, &st, NULL) < 0) { + printf("Test FAILED: sigprocmask(): %s\n", strerror(errno)); + return PTS_FAIL; + } + + if (sigset(SIGCHLD, SIG_HOLD) != SIG_HOLD) { printf("Test FAILED: sigset() didn't return SIG_HOLD\n"); return PTS_FAIL; } hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-31 10:02:47
|
The branch, master, has been updated via 3759a04145f3d9d8cd4abeab77112d79f4fc30ad (commit) via c58cf0cff52cc72179c6fb4303509a3f2db19945 (commit) via 566d1af5a7111408601ea6cb64218585bee8d04a (commit) via 391e757d43b3ac33a4a435e319ee77b1daa6da76 (commit) via 008f0d2c45d52af059d7981685921fc53d7354bf (commit) via 7ad24180d690306e129b84d49806f9f176a28d57 (commit) via 2df915dc1da7c5d92e03856095d3f66601178e58 (commit) via c65b70531c8d383a957654ad5179cb302b405a3b (commit) via 95a376d4e50acd0c90bf749060a1974338a082a9 (commit) via 6e3dd83d9f575d98d76b8b3f642ad6e8793dbdfc (commit) from b72a24c9eb339841a0c4b82d384a5b3ba10c9ecb (commit) - Log ----------------------------------------------------------------- commit 3759a04145f3d9d8cd4abeab77112d79f4fc30ad Author: Rishikesh K Rajak <ris...@li...> Date: Wed Mar 31 15:32:05 2010 +0530 Merge branches 'maint' and 'master' commit c58cf0cff52cc72179c6fb4303509a3f2db19945 Author: Rishikesh K Rajak <ris...@li...> Date: Wed Mar 31 15:30:14 2010 +0530 cgroup_fj_release_agent is not getting installed as it does not end with *.sh. And Other fix is about the indentation of rtc device driver testcases Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: .gitignore | 3 + configure.ac | 1 + m4/ltp-cap.m4 | 17 +---- m4/{ltp-unshare.m4 => ltp-prctl.m4} | 10 +++- testcases/kernel/controllers/cgroup_fj/Makefile | 2 +- .../controllers/cgroup_fj/run_cgroup_test_fj.sh | 2 +- testcases/kernel/device-drivers/rtc/Makefile | 4 +- testcases/kernel/security/Makefile | 3 + testcases/kernel/security/cap_bound/cap_bounds_r.c | 44 +++++++------- .../kernel/security/cap_bound/cap_bounds_rw.c | 58 ++++++++++------- .../security/cap_bound/cap_bset_inh_bounds.c | 61 ++++--------------- testcases/kernel/security/cap_bound/check_pe.c | 20 ++---- testcases/kernel/security/cap_bound/dummy.c | 26 +++----- .../kernel/security/cap_bound/exec_with_inh.c | 34 ++-------- .../kernel/security/cap_bound/exec_without_inh.c | 35 ++--------- .../filecaps/{check_simple_capset.c => c.c} | 15 +---- .../kernel/security/filecaps/check_simple_capset.c | 11 +--- .../kernel/security/filecaps/checkforfilecaps.sh | 40 ------------ .../kernel/security/filecaps/checkforlibcap.sh | 66 -------------------- testcases/kernel/security/filecaps/filecapstest.sh | 19 +----- testcases/kernel/security/filecaps/inh_capped.c | 12 +--- testcases/kernel/security/filecaps/print_caps.c | 2 +- .../kernel/security/filecaps/verify_caps_exec.c | 21 +----- .../conformance/interfaces/sigset/8-1.c | 14 ++++- 24 files changed, 144 insertions(+), 376 deletions(-) copy m4/{ltp-unshare.m4 => ltp-prctl.m4} (80%) copy testcases/kernel/security/filecaps/{check_simple_capset.c => c.c} (87%) delete mode 100755 testcases/kernel/security/filecaps/checkforfilecaps.sh delete mode 100755 testcases/kernel/security/filecaps/checkforlibcap.sh diff --git a/.gitignore b/.gitignore index e0ba857..660f345 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,6 @@ lib*.a /include/stamp-h1 /m4/Makefile /m4/Makefile.in +.gitattributes +.pc/ +patches/ diff --git a/configure.ac b/configure.ac index 8a2ebe2..3dd9829 100644 --- a/configure.ac +++ b/configure.ac @@ -61,6 +61,7 @@ AC_CONFIG_SUBDIRS([ \ ]) LTP_CHECK_CAPABILITY_SUPPORT +LTP_CHECK_PRCTL_SUPPORT LTP_CHECK_CRYPTO LTP_CHECK_LINUX_PTRACE LTP_CHECK_SELINUX diff --git a/m4/ltp-cap.m4 b/m4/ltp-cap.m4 index 5f8d969..caa436f 100644 --- a/m4/ltp-cap.m4 +++ b/m4/ltp-cap.m4 @@ -23,21 +23,12 @@ dnl LTP_CHECK_CAPABILITY_SUPPORT dnl ---------------------------- dnl AC_DEFUN([LTP_CHECK_CAPABILITY_SUPPORT],[ +AH_TEMPLATE(HAVE_LIBCAP, +[Define to 1 if you have libcap-2 installed.]) AC_CHECK_HEADERS(sys/capability.h,[ - AC_CHECK_HEADERS(attr/xattr.h) LTP_CAPABILITY_SUPPORT=yes - AC_CHECK_LIB(cap,cap_free,[ - AC_CHECK_LIB(cap,cap_from_text,[ - AC_CHECK_LIB(cap,cap_set_proc,[ - AC_CHECK_LIB(cap,cap_compare,[ - CAP_LIBS="-lcap" - ]) - ]) - ]) - ]) - AC_CHECK_DECLS([CAP_BSET_DROP, CAP_BSET_READ, PR_CAPBSET_READ, cap_compare, cap_free, cap_from_text, cap_get_proc, cap_set_file, cap_set_flag, cap_set_proc, cap_to_text],[],[],[dnl -#include <sys/capability.h> -]) dnl AC_CHECK_DECLS + AC_CHECK_LIB(cap,cap_compare,[AC_DEFINE(HAVE_LIBCAP) CAP_LIBS="-lcap"], [CAP_LIBS=""]) + AC_CHECK_PROG(HAVE_SETCAP,setcap,setcap,false) ])] AC_SUBST(CAP_LIBS) ) diff --git a/m4/ltp-unshare.m4 b/m4/ltp-prctl.m4 similarity index 80% copy from m4/ltp-unshare.m4 copy to m4/ltp-prctl.m4 index 60f4c54..51edb08 100644 --- a/m4/ltp-unshare.m4 +++ b/m4/ltp-prctl.m4 @@ -19,7 +19,13 @@ dnl Author: Garrett Cooper <yan...@gm...> dnl dnl -dnl LTP_CHECK_SYSCALL_UNSHARE +dnl LTP_CHECK_PRCTL_SUPPORT dnl ---------------------------- dnl -AC_DEFUN([LTP_CHECK_SYSCALL_UNSHARE],[AC_CHECK_FUNCS_ONCE(unshare)]) +AC_DEFUN([LTP_CHECK_PRCTL_SUPPORT],[ +AC_CHECK_HEADERS(sys/prctl.h,[ + AC_CHECK_DECLS([PR_CAPBSET_DROP, PR_CAPBSET_READ], [],[],[dnl +#include <sys/prctl.h> +]) dnl AC_CHECK_DECLS +])] +) diff --git a/testcases/kernel/controllers/cgroup_fj/Makefile b/testcases/kernel/controllers/cgroup_fj/Makefile index e0524aa..d18e672 100644 --- a/testcases/kernel/controllers/cgroup_fj/Makefile +++ b/testcases/kernel/controllers/cgroup_fj/Makefile @@ -25,6 +25,6 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/testcases.mk include $(abs_srcdir)/../Makefile.inc -INSTALL_TARGETS := *.sh +INSTALL_TARGETS := *.sh cgroup_fj_release_agent include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh b/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh index 7445725..672f37c 100755 --- a/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh +++ b/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh @@ -129,4 +129,4 @@ do fi done -exit 0; +exit $ret; diff --git a/testcases/kernel/device-drivers/rtc/Makefile b/testcases/kernel/device-drivers/rtc/Makefile index 9b776ca..0eefcb0 100644 --- a/testcases/kernel/device-drivers/rtc/Makefile +++ b/testcases/kernel/device-drivers/rtc/Makefile @@ -23,7 +23,7 @@ SRC = rtc-test.c all: $(SRC) - $(CC) $(SRC) $(CFLAGS) $(LIBS) -o rtc-test + $(CC) $(SRC) $(CFLAGS) $(LIBS) -o rtc-test clean: - rm -f rtc-test + rm -f rtc-test diff --git a/testcases/kernel/security/Makefile b/testcases/kernel/security/Makefile index a23ce8f..52b8d06 100644 --- a/testcases/kernel/security/Makefile +++ b/testcases/kernel/security/Makefile @@ -29,6 +29,9 @@ include $(top_srcdir)/include/mk/env_pre.mk ifeq ($(strip $(CAP_LIBS)),) FILTER_OUT_DIRS := cap_bound filecaps endif +ifeq ($(HAVE_SETCAP),false) +FILTER_OUT_DIRS += filecaps +endif # XXX (garrcoop): avoid compilation failures on RHEL 5.4, as reported by # Mitani-san, because of policy versioning issues... diff --git a/testcases/kernel/security/cap_bound/cap_bounds_r.c b/testcases/kernel/security/cap_bound/cap_bounds_r.c index 917d889..0b1c5b3 100644 --- a/testcases/kernel/security/cap_bound/cap_bounds_r.c +++ b/testcases/kernel/security/cap_bound/cap_bounds_r.c @@ -32,21 +32,6 @@ #include <sys/prctl.h> #include <test.h> -#ifndef CAP_LAST_CAP -#warning out-of-date capability.h does not define CAP_LAST_CAP -#define CAP_LAST_CAP 28 /* be ultra-conservative */ -#endif - -#ifndef CAP_BSET_READ -#warning CAP_BSET_READ not defined -#define CAP_BSET_READ 23 -#endif - -#ifndef CAP_BSET_DROP -#warning CAP_BSET_DROP not defined -#define CAP_BSET_DROP 24 -#endif - char *TCID = "cap_bounds_r"; int TST_TOTAL=1; @@ -59,17 +44,27 @@ int main(int argc, char *argv[]) int i; for (i=0; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != 1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, %d) returned %d\n", i, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, %d) returned %d\n", i, ret); if (ret == -1) tst_resm(TINFO, "errno was %d\n", errno); tst_exit(); } } - ret = prctl(CAP_BSET_READ, -1); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, -1); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, -1) returned %d\n", -1, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, -1) returned %d\n", ret); tst_exit(); } @@ -79,13 +74,18 @@ int main(int argc, char *argv[]) * testing... So let's take an insanely high value */ #define INSANE 63 #define max(x,y) (x > y ? x : y) - ret = prctl(CAP_BSET_READ, max(INSANE,CAP_LAST_CAP+1)); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, max(INSANE,CAP_LAST_CAP+1)); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, %d) returned %d\n", CAP_LAST_CAP+1, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, %d) returned %d\n", CAP_LAST_CAP+1, ret); tst_resm(TINFO, " %d is CAP_LAST_CAP+1 and should not exist\n", CAP_LAST_CAP+1); tst_exit(); } - tst_resm(TPASS, "CAP_BSET_READ tests passed\n"); + tst_resm(TPASS, "PR_CAPBSET_READ tests passed\n"); #else tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif diff --git a/testcases/kernel/security/cap_bound/cap_bounds_rw.c b/testcases/kernel/security/cap_bound/cap_bounds_rw.c index 9129c4e..827a305 100644 --- a/testcases/kernel/security/cap_bound/cap_bounds_rw.c +++ b/testcases/kernel/security/cap_bound/cap_bounds_rw.c @@ -31,21 +31,6 @@ #include <sys/prctl.h> #include <test.h> -#ifndef CAP_LAST_CAP -#warning out-of-date capability.h does not define CAP_LAST_CAP -#define CAP_LAST_CAP 28 /* be ultra-conservative */ -#endif - -#ifndef CAP_BSET_READ -#warning CAP_BSET_READ not defined -#define CAP_BSET_READ 23 -#endif - -#ifndef CAP_BSET_DROP -#warning CAP_BSET_DROP not defined -#define CAP_BSET_DROP 24 -#endif - char *TCID = "cap_bounds_rw"; int TST_TOTAL=1; @@ -57,7 +42,12 @@ int check_remaining_caps(int lastdropped) int ret; for (i=0; i <= lastdropped; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret == -1) { tst_resm(TBROK, "Failed to read bounding set during sanity check\n"); tst_exit(); @@ -68,7 +58,12 @@ int check_remaining_caps(int lastdropped) } } for (; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret == -1) { tst_resm(TBROK, "Failed to read bounding set during sanity check\n"); tst_exit(); @@ -86,9 +81,14 @@ int main(int argc, char *argv[]) int ret = 1; int i; - ret = prctl(CAP_BSET_DROP, -1); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_READ, -1); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, -1) returned %d\n", ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, -1) returned %d\n", ret); tst_exit(); } /* Ideally I'd check CAP_LAST_CAP+1, but userspace @@ -97,16 +97,26 @@ int main(int argc, char *argv[]) * testing... So let's take an insanely high value */ #define INSANE 63 #define max(x,y) (x > y ? x : y) - ret = prctl(CAP_BSET_DROP, max(INSANE,CAP_LAST_CAP+1)); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_DROP, max(INSANE,CAP_LAST_CAP+1)); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, %d) returned %d\n", max(INSANE, CAP_LAST_CAP+1), ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, %d) returned %d\n", max(INSANE, CAP_LAST_CAP+1), ret); tst_resm(TINFO, " %d is should not exist\n", max(INSANE, CAP_LAST_CAP+1)); tst_exit(); } for (i=0; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_DROP, i); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_DROP, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != 0) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, %d) returned %d\n", i, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, %d) returned %d\n", i, ret); if (ret == -1) tst_resm(TINFO, "errno was %d\n", errno); tst_exit(); @@ -122,6 +132,6 @@ int main(int argc, char *argv[]) tst_exit(); } } - tst_resm(TPASS, "CAP_BSET_DROP tests passed\n"); + tst_resm(TPASS, "PR_CAPBSET_DROP tests passed\n"); tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c b/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c index 894e0a5..c6c34c0 100644 --- a/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c +++ b/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c @@ -39,9 +39,11 @@ int TST_TOTAL=2; int errno; +#if HAVE_SYS_CAPABILITY_H +#if HAVE_DECL_PR_CAPBSET_READ && HAVE_DECL_PR_CAPBSET_DROP +#ifdef HAVE_LIBCAP int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H int ret = 1; cap_value_t v[1]; cap_flag_value_t f; @@ -49,12 +51,7 @@ int main(int argc, char *argv[]) /* We pick a random capability... let's use CAP_SYS_ADMIN */ /* make sure we have the capability now */ -#if HAVE_DECL_CAP_BSET_READ - ret = prctl(CAP_BSET_READ, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_READ, CAP_SYS_ADMIN); if (ret != 1) { tst_resm(TBROK, "Not starting with CAP_SYS_ADMIN\n"); tst_exit(); @@ -66,47 +63,23 @@ int main(int argc, char *argv[]) tst_resm(TBROK, "Failed to create cap_sys_admin+i cap_t (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#else - errno = ENOSYS; - ret = -1; -#endif if (ret) { tst_resm(TBROK, "Failed to cap_set_proc with cap_sys_admin+i (ret %d errno %d)\n", ret, errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - errno = ENOSYS; - ret = -1; -#endif -#else - errno = ENOSYS; - ret = -1; -#endif if (ret || f != CAP_SET) { tst_resm(TBROK, "Failed to add CAP_SYS_ADMIN to pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -114,18 +87,8 @@ int main(int argc, char *argv[]) } /* test 1: is CAP_SYS_ADMIN still in pI? */ -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - errno = ENOSYS; - ret = -1; -#endif -#else - errno = ENOSYS; - ret = -1; -#endif if (ret || f != CAP_SET) { tst_resm(TFAIL, "CAP_SYS_ADMIN not in pI after dropping from bounding set\n"); tst_exit(); @@ -144,24 +107,24 @@ int main(int argc, char *argv[]) tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(tmpcap); -#endif /* test 2: can we put it back in pI? */ -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#endif if (ret == 0) { /* success means pI was not bounded by X */ tst_resm(TFAIL, "Managed to put CAP_SYS_ADMIN back into pI though not in X\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif tst_resm(TPASS, "Couldn't put CAP_SYS_ADMIN back into pI when not in bounding set\n"); -#else +#else /* HAVE_LIBCAP */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* HAVE_DECL_PR_CAPBSET_READ && HAVE_DECL_PR_CAPBSET_DROP */ + tst_resm(TCONF, "System doesn't have CAPBSET prctls."); +#endif +#else /* HAVE_SYS_CAPABILITY_H */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/check_pe.c b/testcases/kernel/security/cap_bound/check_pe.c index 2e0451a..f621e70 100644 --- a/testcases/kernel/security/cap_bound/check_pe.c +++ b/testcases/kernel/security/cap_bound/check_pe.c @@ -40,9 +40,10 @@ int TST_TOTAL=1; int errno; +#if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H int ret = 1; cap_flag_value_t f; cap_t cur; @@ -58,26 +59,14 @@ int main(int argc, char *argv[]) tst_exit(); } -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_EFFECTIVE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "cap_get_flag failed (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif if (n == 1) { if (f == CAP_SET) { tst_resm(TPASS, "cap is in pE\n"); @@ -91,8 +80,11 @@ int main(int argc, char *argv[]) tst_exit(); } tst_resm(TFAIL, "Cap is in pE\n"); -#else +#else /* libcap */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* capability_h */ + tst_resm(TCONF, "System doesn't have sys/capability.h"); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/dummy.c b/testcases/kernel/security/cap_bound/dummy.c index ad65007..e882940 100644 --- a/testcases/kernel/security/cap_bound/dummy.c +++ b/testcases/kernel/security/cap_bound/dummy.c @@ -5,31 +5,21 @@ #include <sys/capability.h> #endif -#define END \ - printf("System doesn't support POSIX capabilities.\n"); \ - return 1 - int main() { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP cap_t cur; -#if HAVE_DECL_CAP_SET_PROC -#if HAVE_DECL_CAP_FROM_TEXT cur = cap_from_text("all=eip"); cap_set_proc(cur); -#else - END; -#endif -#else - END; -#endif -#if HAVE_DECL_CAP_FREE cap_free(cur); -#else - END; + return 0; +#else /* libcap */ + printf("System doesn't support POSIX capabilities.\n"); + return 1; #endif -#else - END; +#else /* capability_h */ + printf("System doesn't support sys/capability.h\n"); + return 1; #endif - return 0; } diff --git a/testcases/kernel/security/cap_bound/exec_with_inh.c b/testcases/kernel/security/cap_bound/exec_with_inh.c index 21c60fd..123f665 100644 --- a/testcases/kernel/security/cap_bound/exec_with_inh.c +++ b/testcases/kernel/security/cap_bound/exec_with_inh.c @@ -42,59 +42,34 @@ int errno; int main(int argc, char *argv[]) { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int ret = 1; cap_flag_value_t f; cap_t cur = 0; /* Make sure CAP_SYS_ADMIN is in pI */ -#if HAVE_DECL_CAP_FROM_TEXT cur = cap_from_text("all=eip"); -#endif if (!cur) { tst_resm(TBROK, "Failed to create cap_sys_admin+i cap_t (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "Failed to cap_set_proc with cap_sys_admin+i (ret %d errno %d)\n", ret, errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (ret || f != CAP_SET) { tst_resm(TBROK, "Failed to add CAP_SYS_ADMIN to pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -104,8 +79,11 @@ int main(int argc, char *argv[]) /* execute "check_pe 1" */ execl("check_pe", "check_pe", "1", NULL); tst_resm(TBROK, "Failed to execute check_pe (errno %d)\n", errno); -#else +#else /* HAVE_LIBCAP */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* HAVE_SYS_CAPABILITY_H */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/exec_without_inh.c b/testcases/kernel/security/cap_bound/exec_without_inh.c index 81216f3..df3c4d9 100644 --- a/testcases/kernel/security/cap_bound/exec_without_inh.c +++ b/testcases/kernel/security/cap_bound/exec_without_inh.c @@ -42,39 +42,20 @@ int errno; int main(int argc, char *argv[]) { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int ret = 1; cap_flag_value_t f; cap_value_t v[1]; cap_t cur; /* Make sure CAP_SYS_ADMIN is not in pI */ -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (f == CAP_SET) { v[0] = CAP_SYS_ADMIN; -#if HAVE_DECL_CAP_SET_FLAG ret = cap_set_flag(cur, CAP_INHERITABLE, 1, v, CAP_CLEAR); -#else - ret = -1; - errno = ENOSYS; -#endif -#if HAVE_DECL_CAP_SET_PROC if (!ret) ret = cap_set_proc(cur); -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "Failed to drop cap_sys_admin from pI\n"); tst_exit(); @@ -83,17 +64,10 @@ int main(int argc, char *argv[]) tst_brkm(TBROK | TERRNO, tst_exit, "Failed to add \ CAP_SYS_ADMIN to pI"); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -103,8 +77,11 @@ int main(int argc, char *argv[]) /* execute "check_pe 0" */ execl("check_pe", "check_pe", "0", NULL); tst_resm(TBROK, "Failed to execute check_pe (errno %d)\n", errno); -#else +#else /* libcap */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* capability_h */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/filecaps/check_simple_capset.c b/testcases/kernel/security/filecaps/c.c similarity index 87% copy from testcases/kernel/security/filecaps/check_simple_capset.c copy to testcases/kernel/security/filecaps/c.c index 7851e01..5e1696c 100644 --- a/testcases/kernel/security/filecaps/check_simple_capset.c +++ b/testcases/kernel/security/filecaps/c.c @@ -20,35 +20,26 @@ #include <stdio.h> -#include "config.h" -#if HAVE_SYS_CAPABILITY_H #include <sys/capability.h> -#endif int main() { -#if HAVE_SYS_CAPABILITY_H + +#ifdef HAVE_LIBCAP cap_t caps, caps2; int ret; -#if HAVE_DECL_CAP_FROM_TEXT && HAVE_DECL_CAP_SET_PROC && HAVE_DECL_CAP_COMPARE caps = cap_from_text("cap_setpcap+ep"); caps2 = cap_from_text("cap_setpcap+ep"); ret = cap_set_proc(caps); ret = cap_compare(caps, caps2); -#else - printf("System doesn't support full POSIX capabilities.\n"); - return 1; -#endif printf("Caps were %sthe same\n", ret ? "not " : ""); -#if HAVE_DECL_CAP_FREE cap_free(caps); cap_free(caps2); -#endif return ret; #else - printf("System doesn't support POSIX capabilities.\n"); + printf("System doesn't support full POSIX capabilities.\n"); return 1; #endif } diff --git a/testcases/kernel/security/filecaps/check_simple_capset.c b/testcases/kernel/security/filecaps/check_simple_capset.c index 7851e01..6c7790d 100644 --- a/testcases/kernel/security/filecaps/check_simple_capset.c +++ b/testcases/kernel/security/filecaps/check_simple_capset.c @@ -27,28 +27,21 @@ int main() { -#if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP cap_t caps, caps2; int ret; -#if HAVE_DECL_CAP_FROM_TEXT && HAVE_DECL_CAP_SET_PROC && HAVE_DECL_CAP_COMPARE caps = cap_from_text("cap_setpcap+ep"); caps2 = cap_from_text("cap_setpcap+ep"); ret = cap_set_proc(caps); ret = cap_compare(caps, caps2); -#else - printf("System doesn't support full POSIX capabilities.\n"); - return 1; -#endif printf("Caps were %sthe same\n", ret ? "not " : ""); -#if HAVE_DECL_CAP_FREE cap_free(caps); cap_free(caps2); -#endif return ret; #else - printf("System doesn't support POSIX capabilities.\n"); + printf("System doesn't support full POSIX capabilities.\n"); return 1; #endif } diff --git a/testcases/kernel/security/filecaps/checkforfilecaps.sh b/testcases/kernel/security/filecaps/checkforfilecaps.sh deleted file mode 100755 index 757d409..0000000 --- a/testcases/kernel/security/filecaps/checkforfilecaps.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -################################################################################ -## ## -## Copyright (c) International Business Machines Corp., 2008 ## -## ## -## This program is free software; you can redistribute it and#or modify ## -## it under the terms of the GNU General Public License as published by ## -## the Free Software Foundation; either version 2 of the License, or ## -## (at your option) any later version. ## -## ## -## This program is distributed in the hope that it will be useful, but ## -## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## -## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## -## for more details. ## -## ## -## You should have received a copy of the GNU General Public License ## -## along with this program; if not, write to the Free Software ## -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## -## ## -################################################################################ - -if ! check_simple_capset; then - echo Posix capabilities not compiled into the kernel. Please - echo modprobe capability or recompile your kernel with - echo CONFIG_SECURITY_CAPABILITIES=y. - exit 1 -fi - -touch testme -setcap cap_sys_admin=ip testme -ret=$? -rm -f testme -if [ $ret -ne 0 ]; then - echo File capabilities not compiled into kernel. Please - echo make sure your kernel is compiled with - echo CONFIG_SECURITY_FILE_CAPABILITIES=y. - exit 1 -fi - -exit 0 diff --git a/testcases/kernel/security/filecaps/checkforlibcap.sh b/testcases/kernel/security/filecaps/checkforlibcap.sh deleted file mode 100755 index cc7642e..0000000 --- a/testcases/kernel/security/filecaps/checkforlibcap.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh -################################################################################ -## ## -## Copyright (c) International Business Machines Corp., 2008 ## -## ## -## This program is free software; you can redistribute it and#or modify ## -## it under the terms of the GNU General Public License as published by ## -## the Free Software Foundation; either version 2 of the License, or ## -## (at your option) any later version. ## -## ## -## This program is distributed in the hope that it will be useful, but ## -## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## -## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## -## for more details. ## -## ## -## You should have received a copy of the GNU General Public License ## -## along with this program; if not, write to the Free Software ## -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## -## ## -################################################################################ - -if [ "x$CC" = "x" ]; then - export CC=gcc -fi -yesno=0 -if [ "$1" = "yesno" ]; then - yesno=1 -fi - -SETCAP=`which setcap` -if [ -z "${SETCAP}" ]; then - ret=1 -else - ret=0 -fi - -if [ $ret -eq 0 ]; then - #also test for -lcap - $CC -o check_simple_capset check_simple_capset.c -lcap \ - 2>/dev/null - - ret=$? -fi - -if [ $ret -eq 0 ]; then - #also test for xattr - $CC -o check_xattr check_xattr.c - ret=$? - if [ $ret -ne 0 ]; then - echo "Please install xattr headers" - fi -fi - -if [ $ret -ne 0 ]; then - if [ $yesno -eq 1 ]; then - echo no - else - exit 1 - fi -else - if [ $yesno -eq 1 ]; then - echo yes - else - exit 0 - fi -fi diff --git a/testcases/kernel/security/filecaps/filecapstest.sh b/testcases/kernel/security/filecaps/filecapstest.sh index 149cbc1..43582dc 100755 --- a/testcases/kernel/security/filecaps/filecapstest.sh +++ b/testcases/kernel/security/filecaps/filecapstest.sh @@ -19,23 +19,9 @@ ## ## ################################################################################ -checkforlibcap.sh -ret=$? -if [ $ret -ne 0 ]; then - echo "Filecaps 0 CONF : System doesn't support execution of the test" - echo setcap not installed. Please install libcap-2.11 or newer from - echo ftp://ftp.kernel.org/pub/linux/libs/security/linux-privs/libcap2 - exit 0 -fi -checkforfilecaps.sh -ret=$? -if [ $ret -ne 0 ]; then - echo "Filecaps 0 CONF : File capabilities not available" - exit 0 -fi - echo "Running in:" -cp $LTPROOT/testcases/bin/print_caps . +#rm -f print_caps +#cp $LTPROOT/testcases/bin/print_caps . mkfifo caps_fifo chmod 777 caps_fifo exit_code=0 @@ -60,4 +46,5 @@ if [ $tmp -ne 0 ]; then exit_code=$tmp fi +unlink caps_fifo exit $exit_code diff --git a/testcases/kernel/security/filecaps/inh_capped.c b/testcases/kernel/security/filecaps/inh_capped.c index 513fcb9..794e8b1 100644 --- a/testcases/kernel/security/filecaps/inh_capped.c +++ b/testcases/kernel/security/filecaps/inh_capped.c @@ -34,21 +34,17 @@ char *TCID = "filecaps"; int TST_TOTAL=1; +#ifdef HAVE_LIBCAP void debug_print_caps(char *when) { -#ifdef DEBUG char buf[2000]; tst_resm(TINFO, "%s", when); -#if HAVE_DECL_SET_CAP_TO_TEXT snprintf(buf, 2000, "%s", cap_to_text(cap_get_proc(), NULL)); -#endif tst_resm(TINFO, "%s", buf); -#endif } int set_caps_from_text(char *capstr) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_SET_CAP_SET_PROC && HAVE_DECL_SET_CAP_FREE cap_t caps = cap_from_text(capstr); int ret; @@ -59,14 +55,12 @@ int set_caps_from_text(char *capstr) ret = cap_set_proc(caps); cap_free(caps); return ret; -#else - return -1; -#endif } +#endif int main() { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_SET_CAPS_FROM_TEXT +#ifdef HAVE_LIBCAP int ret; debug_print_caps("start"); diff --git a/testcases/kernel/security/filecaps/print_caps.c b/testcases/kernel/security/filecaps/print_caps.c index 188856e..f0e9bce 100644 --- a/testcases/kernel/security/filecaps/print_caps.c +++ b/testcases/kernel/security/filecaps/print_caps.c @@ -40,7 +40,7 @@ int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_GET_PROC && HAVE_DECL_CAP_TO_TEXT +#ifdef HAVE_LIBCAP cap_t cap = cap_get_proc(); int fd; int seqno = 0; diff --git a/testcases/kernel/security/filecaps/verify_caps_exec.c b/testcases/kernel/security/filecaps/verify_caps_exec.c index 16fcc0f..5250007 100644 --- a/testcases/kernel/security/filecaps/verify_caps_exec.c +++ b/testcases/kernel/security/filecaps/verify_caps_exec.c @@ -60,20 +60,18 @@ void usage(char *me) #define DROP_PERMS 0 #define KEEP_PERMS 1 +#ifdef HAVE_LIBCAP void print_my_caps() { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_GET_PROC && HAVE_DECL_CAP_TO_TEXT cap_t cap = cap_get_proc(); char *txt = cap_to_text(cap, NULL); tst_resm(TINFO, "\ncaps are %s\n", txt); cap_free(cap); cap_free(txt); -#endif } int drop_root(int keep_perms) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_FROM_TEXT && HAVE_DECL_CAP_SET_PROC int ret; if (keep_perms) @@ -89,15 +87,11 @@ int drop_root(int keep_perms) cap_set_proc(cap); cap_free(cap); } -#else - tst_resm(TCONF, "System doesn't have full POSIX capabilities support.\n"); -#endif tst_exit(); } int perms_test(void) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_SET_FILE int ret; cap_t cap; @@ -118,9 +112,6 @@ int perms_test(void) cap_free(cap); return ret; -#else - return -1; -#endif } #define FIFOFILE "caps_fifo" @@ -160,7 +151,6 @@ void read_from_fifo(char *buf) close(fd); } -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_COMPARE && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_TO_TEXT int fork_drop_and_exec(int keepperms, cap_t expected_caps) { @@ -219,12 +209,9 @@ int fork_drop_and_exec(int keepperms, cap_t expected_caps) } return ret; } -#endif int caps_actually_set_test(void) { - -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_PR_CAPBSET_READ int whichcap, finalret = 0, ret; cap_t fcap, pcap, cap_fullpi; cap_value_t capvalue[1]; @@ -399,17 +386,15 @@ int caps_actually_set_test(void) cap_free(cap_fullpi); return finalret; -#else - return -1; -#endif } +#endif int main(int argc, char *argv[]) { +#ifdef HAVE_LIBCAP if (argc < 2) usage(argv[0]); -#if HAVE_SYS_CAPABILITY_H int ret = 0; switch(atoi(argv[1])) { diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c index f344b19..22b1f40 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c @@ -15,12 +15,22 @@ #include <signal.h> #include <stdio.h> #include <stdlib.h> +#include <errno.h> +#include <string.h> #include "posixtest.h" -int main() +int main(void) { + sigset_t st; + sigemptyset(&st); + sigaddset(&st, SIGCHLD); - if (sigset(SIGCHLD,SIG_HOLD) != SIG_HOLD) { + if (sigprocmask(SIG_BLOCK, &st, NULL) < 0) { + printf("Test FAILED: sigprocmask(): %s\n", strerror(errno)); + return PTS_FAIL; + } + + if (sigset(SIGCHLD, SIG_HOLD) != SIG_HOLD) { printf("Test FAILED: sigset() didn't return SIG_HOLD\n"); return PTS_FAIL; } hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-31 10:04:49
|
The branch, next, has been updated via df6f6981dced07553a9978d05a5bdfd9b80e354d (commit) via c58cf0cff52cc72179c6fb4303509a3f2db19945 (commit) via 566d1af5a7111408601ea6cb64218585bee8d04a (commit) via b72a24c9eb339841a0c4b82d384a5b3ba10c9ecb (commit) via f102fd9735f01b4e2c9ae44f3c90d1a56d4d81f8 (commit) via 96a4822d72478abce6dceabc816f658ba4ded0d3 (commit) via 965127e99f1c3e4035a3de621ca0c295de14448b (commit) via 0a52859d55cf93cdd310ec678868cb4d10e80728 (commit) via d05498f44de5d3e542b2031b458d84e907604728 (commit) via 2784e9a6e36cacad4192f41a8c9044a85428ed27 (commit) via 615e1e37de053855b6bd56bae8b00d8a17133f8a (commit) via b8ed5460176838d9b714dddbc17685983b4a8b9b (commit) via e8e3c7598b82b54a7770c48a2422d5d6fa127045 (commit) from 391e757d43b3ac33a4a435e319ee77b1daa6da76 (commit) - Log ----------------------------------------------------------------- commit df6f6981dced07553a9978d05a5bdfd9b80e354d Author: Rishikesh K Rajak <ris...@li...> Date: Wed Mar 31 15:33:34 2010 +0530 Merge branches 'maint' and 'next' into next ----------------------------------------------------------------------- Summary of changes: testcases/kernel/controllers/cgroup_fj/Makefile | 2 +- testcases/kernel/device-drivers/rtc/Makefile | 4 ++-- testcases/network/multicast/mc_cmds/mc_cmds | 2 +- .../conformance/interfaces/sem_post/8-1.c | 4 +++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/testcases/kernel/controllers/cgroup_fj/Makefile b/testcases/kernel/controllers/cgroup_fj/Makefile index e0524aa..d18e672 100644 --- a/testcases/kernel/controllers/cgroup_fj/Makefile +++ b/testcases/kernel/controllers/cgroup_fj/Makefile @@ -25,6 +25,6 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/testcases.mk include $(abs_srcdir)/../Makefile.inc -INSTALL_TARGETS := *.sh +INSTALL_TARGETS := *.sh cgroup_fj_release_agent include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/kernel/device-drivers/rtc/Makefile b/testcases/kernel/device-drivers/rtc/Makefile index 9b776ca..0eefcb0 100644 --- a/testcases/kernel/device-drivers/rtc/Makefile +++ b/testcases/kernel/device-drivers/rtc/Makefile @@ -23,7 +23,7 @@ SRC = rtc-test.c all: $(SRC) - $(CC) $(SRC) $(CFLAGS) $(LIBS) -o rtc-test + $(CC) $(SRC) $(CFLAGS) $(LIBS) -o rtc-test clean: - rm -f rtc-test + rm -f rtc-test diff --git a/testcases/network/multicast/mc_cmds/mc_cmds b/testcases/network/multicast/mc_cmds/mc_cmds index d537103..f43dd95 100755 --- a/testcases/network/multicast/mc_cmds/mc_cmds +++ b/testcases/network/multicast/mc_cmds/mc_cmds @@ -127,7 +127,7 @@ for eth in $IFNAME cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts | grep 1 > /dev/null if [ $? -eq 0 ] then - end_testcase "Multicast ping disabled on this system (this is normal on post 2005 kernels)" + end_testcase "Multicast ping disabled on this system (this is normal on post year:2005 kernels)" fi # Do the ping tests: Execute ping 224.0.0.1 - Verify that the proper diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c index b2db995..86007b7 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c @@ -161,7 +161,6 @@ int main() } fprintf(stderr, "P: child_1:%d forked\n", c_1); - sleep(1); c_2 = fork(); if (c_2 == 0) { @@ -198,6 +197,9 @@ int main() //printf("val = %d\n", val); } while (val != 0); */ + + /* Synchronization required before release the lock */ + sleep(1); /* Ok, let's release the lock */ fprintf(stderr, "P: release lock\n"); sem_post(sem); hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-31 10:06:17
|
The branch, maint, has been updated via c58cf0cff52cc72179c6fb4303509a3f2db19945 (commit) from 566d1af5a7111408601ea6cb64218585bee8d04a (commit) - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: testcases/kernel/controllers/cgroup_fj/Makefile | 2 +- testcases/kernel/device-drivers/rtc/Makefile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/testcases/kernel/controllers/cgroup_fj/Makefile b/testcases/kernel/controllers/cgroup_fj/Makefile index e0524aa..d18e672 100644 --- a/testcases/kernel/controllers/cgroup_fj/Makefile +++ b/testcases/kernel/controllers/cgroup_fj/Makefile @@ -25,6 +25,6 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/testcases.mk include $(abs_srcdir)/../Makefile.inc -INSTALL_TARGETS := *.sh +INSTALL_TARGETS := *.sh cgroup_fj_release_agent include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/kernel/device-drivers/rtc/Makefile b/testcases/kernel/device-drivers/rtc/Makefile index 9b776ca..0eefcb0 100644 --- a/testcases/kernel/device-drivers/rtc/Makefile +++ b/testcases/kernel/device-drivers/rtc/Makefile @@ -23,7 +23,7 @@ SRC = rtc-test.c all: $(SRC) - $(CC) $(SRC) $(CFLAGS) $(LIBS) -o rtc-test + $(CC) $(SRC) $(CFLAGS) $(LIBS) -o rtc-test clean: - rm -f rtc-test + rm -f rtc-test hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-31 10:07:06
|
The branch, pu, has been updated via f5f06f48d95ce6a3ae82f6bfbb3564cf67fe5e2f (commit) via c58cf0cff52cc72179c6fb4303509a3f2db19945 (commit) via 566d1af5a7111408601ea6cb64218585bee8d04a (commit) via 391e757d43b3ac33a4a435e319ee77b1daa6da76 (commit) via 008f0d2c45d52af059d7981685921fc53d7354bf (commit) via b72a24c9eb339841a0c4b82d384a5b3ba10c9ecb (commit) via f102fd9735f01b4e2c9ae44f3c90d1a56d4d81f8 (commit) via 7ad24180d690306e129b84d49806f9f176a28d57 (commit) via 2df915dc1da7c5d92e03856095d3f66601178e58 (commit) via c65b70531c8d383a957654ad5179cb302b405a3b (commit) via 95a376d4e50acd0c90bf749060a1974338a082a9 (commit) via 6e3dd83d9f575d98d76b8b3f642ad6e8793dbdfc (commit) via 96a4822d72478abce6dceabc816f658ba4ded0d3 (commit) via c700433fe26d24b975bf241668a9701548e6c21d (commit) via 4d574b9f3c82a58d88b97e201ac49cddf7bc5c24 (commit) via e7ed287c04bef2108fa544b0b86629e554403970 (commit) via 965127e99f1c3e4035a3de621ca0c295de14448b (commit) via 0a52859d55cf93cdd310ec678868cb4d10e80728 (commit) via 2784e9a6e36cacad4192f41a8c9044a85428ed27 (commit) via b80fdefbd1843484e5a3ccc3d5748fee5b4cd1f7 (commit) via b8ed5460176838d9b714dddbc17685983b4a8b9b (commit) via e8e3c7598b82b54a7770c48a2422d5d6fa127045 (commit) from d05498f44de5d3e542b2031b458d84e907604728 (commit) - Log ----------------------------------------------------------------- commit f5f06f48d95ce6a3ae82f6bfbb3564cf67fe5e2f Author: Rishikesh K Rajak <ris...@li...> Date: Wed Mar 31 15:33:56 2010 +0530 Merge branches 'maint' and 'pu' into pu ----------------------------------------------------------------------- Summary of changes: .gitignore | 3 + configure.ac | 1 + m4/ltp-cap.m4 | 17 +-- m4/ltp-prctl.m4 | 31 +++ testcases/kernel/controllers/cgroup_fj/Makefile | 2 +- .../controllers/cgroup_fj/run_cgroup_test_fj.sh | 2 +- testcases/kernel/device-drivers/rtc/Makefile | 29 +++ testcases/kernel/device-drivers/rtc/README | 29 +++ testcases/kernel/device-drivers/rtc/rtc-test.c | 218 ++++++++++++++++++++ testcases/kernel/security/Makefile | 3 + testcases/kernel/security/cap_bound/cap_bounds_r.c | 44 ++-- .../kernel/security/cap_bound/cap_bounds_rw.c | 58 +++--- .../security/cap_bound/cap_bset_inh_bounds.c | 61 +----- testcases/kernel/security/cap_bound/check_pe.c | 20 +-- testcases/kernel/security/cap_bound/dummy.c | 26 +-- .../kernel/security/cap_bound/exec_with_inh.c | 34 +--- .../kernel/security/cap_bound/exec_without_inh.c | 35 +--- testcases/kernel/security/filecaps/c.c | 45 ++++ .../kernel/security/filecaps/check_simple_capset.c | 11 +- .../kernel/security/filecaps/checkforfilecaps.sh | 40 ---- .../kernel/security/filecaps/checkforlibcap.sh | 66 ------ testcases/kernel/security/filecaps/filecapstest.sh | 19 +-- testcases/kernel/security/filecaps/inh_capped.c | 12 +- testcases/kernel/security/filecaps/print_caps.c | 2 +- .../kernel/security/filecaps/verify_caps_exec.c | 21 +-- testcases/network/multicast/mc_cmds/mc_cmds | 2 +- .../conformance/interfaces/sem_getvalue/1-1.c | 21 +- .../conformance/interfaces/sem_getvalue/2-1.c | 19 +- .../conformance/interfaces/sem_getvalue/2-2.c | 59 ++---- .../conformance/interfaces/sem_getvalue/4-1.c | 18 +- .../conformance/interfaces/sem_getvalue/5-1.c | 23 +- .../conformance/interfaces/sem_post/8-1.c | 4 +- .../conformance/interfaces/sigset/8-1.c | 14 +- 33 files changed, 548 insertions(+), 441 deletions(-) create mode 100644 m4/ltp-prctl.m4 create mode 100644 testcases/kernel/device-drivers/rtc/Makefile create mode 100644 testcases/kernel/device-drivers/rtc/README create mode 100644 testcases/kernel/device-drivers/rtc/rtc-test.c create mode 100644 testcases/kernel/security/filecaps/c.c delete mode 100755 testcases/kernel/security/filecaps/checkforfilecaps.sh delete mode 100755 testcases/kernel/security/filecaps/checkforlibcap.sh diff --git a/.gitignore b/.gitignore index e0ba857..660f345 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,6 @@ lib*.a /include/stamp-h1 /m4/Makefile /m4/Makefile.in +.gitattributes +.pc/ +patches/ diff --git a/configure.ac b/configure.ac index 8a2ebe2..3dd9829 100644 --- a/configure.ac +++ b/configure.ac @@ -61,6 +61,7 @@ AC_CONFIG_SUBDIRS([ \ ]) LTP_CHECK_CAPABILITY_SUPPORT +LTP_CHECK_PRCTL_SUPPORT LTP_CHECK_CRYPTO LTP_CHECK_LINUX_PTRACE LTP_CHECK_SELINUX diff --git a/m4/ltp-cap.m4 b/m4/ltp-cap.m4 index 5f8d969..caa436f 100644 --- a/m4/ltp-cap.m4 +++ b/m4/ltp-cap.m4 @@ -23,21 +23,12 @@ dnl LTP_CHECK_CAPABILITY_SUPPORT dnl ---------------------------- dnl AC_DEFUN([LTP_CHECK_CAPABILITY_SUPPORT],[ +AH_TEMPLATE(HAVE_LIBCAP, +[Define to 1 if you have libcap-2 installed.]) AC_CHECK_HEADERS(sys/capability.h,[ - AC_CHECK_HEADERS(attr/xattr.h) LTP_CAPABILITY_SUPPORT=yes - AC_CHECK_LIB(cap,cap_free,[ - AC_CHECK_LIB(cap,cap_from_text,[ - AC_CHECK_LIB(cap,cap_set_proc,[ - AC_CHECK_LIB(cap,cap_compare,[ - CAP_LIBS="-lcap" - ]) - ]) - ]) - ]) - AC_CHECK_DECLS([CAP_BSET_DROP, CAP_BSET_READ, PR_CAPBSET_READ, cap_compare, cap_free, cap_from_text, cap_get_proc, cap_set_file, cap_set_flag, cap_set_proc, cap_to_text],[],[],[dnl -#include <sys/capability.h> -]) dnl AC_CHECK_DECLS + AC_CHECK_LIB(cap,cap_compare,[AC_DEFINE(HAVE_LIBCAP) CAP_LIBS="-lcap"], [CAP_LIBS=""]) + AC_CHECK_PROG(HAVE_SETCAP,setcap,setcap,false) ])] AC_SUBST(CAP_LIBS) ) diff --git a/m4/ltp-prctl.m4 b/m4/ltp-prctl.m4 new file mode 100644 index 0000000..51edb08 --- /dev/null +++ b/m4/ltp-prctl.m4 @@ -0,0 +1,31 @@ +dnl +dnl Copyright (c) Cisco Systems Inc., 2009 +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +dnl the GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl +dnl Author: Garrett Cooper <yan...@gm...> +dnl + +dnl +dnl LTP_CHECK_PRCTL_SUPPORT +dnl ---------------------------- +dnl +AC_DEFUN([LTP_CHECK_PRCTL_SUPPORT],[ +AC_CHECK_HEADERS(sys/prctl.h,[ + AC_CHECK_DECLS([PR_CAPBSET_DROP, PR_CAPBSET_READ], [],[],[dnl +#include <sys/prctl.h> +]) dnl AC_CHECK_DECLS +])] +) diff --git a/testcases/kernel/controllers/cgroup_fj/Makefile b/testcases/kernel/controllers/cgroup_fj/Makefile index e0524aa..d18e672 100644 --- a/testcases/kernel/controllers/cgroup_fj/Makefile +++ b/testcases/kernel/controllers/cgroup_fj/Makefile @@ -25,6 +25,6 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/testcases.mk include $(abs_srcdir)/../Makefile.inc -INSTALL_TARGETS := *.sh +INSTALL_TARGETS := *.sh cgroup_fj_release_agent include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh b/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh index 7445725..672f37c 100755 --- a/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh +++ b/testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh @@ -129,4 +129,4 @@ do fi done -exit 0; +exit $ret; diff --git a/testcases/kernel/device-drivers/rtc/Makefile b/testcases/kernel/device-drivers/rtc/Makefile new file mode 100644 index 0000000..0eefcb0 --- /dev/null +++ b/testcases/kernel/device-drivers/rtc/Makefile @@ -0,0 +1,29 @@ +# +# Copyright (c) Larsen & Toubro Infotech Ltd., 2010 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# + +CFLAGS = -O2 -Wall -I ../../../../include/ +LIBS = -L ../../../../lib/ -lltp +SRC = rtc-test.c + + +all: $(SRC) + $(CC) $(SRC) $(CFLAGS) $(LIBS) -o rtc-test + +clean: + rm -f rtc-test diff --git a/testcases/kernel/device-drivers/rtc/README b/testcases/kernel/device-drivers/rtc/README new file mode 100644 index 0000000..3094aa7 --- /dev/null +++ b/testcases/kernel/device-drivers/rtc/README @@ -0,0 +1,29 @@ +rtc-test.c : Test the Real Time Clock driver + +Tests supported as of now +-------------------------- +1. Read test : This reads the time/date from the RTC + ioctls tested :- RTC_RD_TIME. + +2. Alarm Test: Sets the alarm to 5 seconds in future and makes sure it rings. + ioctls tested :- RTC_ALM_SET, RTC_ALM_READ, RTC_AIE_ON, RTC_AIE_OFF. + +3. Update interrupts test : Sets Update interrupts enable on, waits for five + interrupts and then turns it off. + ioctls tested :- RTC_UIE_ON, RTC_UIE_OFF. + + +How to Build +------------ +You have to build the complete LTP package before trying to build these tests. +After building the complete LTP sources enter this directory and issue a 'make'. + +How to Run +---------- + + The tests assume the rtc device node to be "/dev/rtc". If you have a +different node run the test with the name of the node as a parameter. + +Eg. If your node is /dev/rtc0, then run the test as + + $ ./rtc-test /dev/rtc0 diff --git a/testcases/kernel/device-drivers/rtc/rtc-test.c b/testcases/kernel/device-drivers/rtc/rtc-test.c new file mode 100644 index 0000000..a62b033 --- /dev/null +++ b/testcases/kernel/device-drivers/rtc/rtc-test.c @@ -0,0 +1,218 @@ +/* rtc-test.c + * + * Tests for the Real Time Clock driver. + * + * Copyright (c) Larsen & Toubro Infotech Ltd., 2010 + * + * Author : Silesh C V <Sil...@ln...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "test.h" +#include <sys/ioctl.h> +#include <stdio.h> +#include <stdlib.h> +#include <fcntl.h> +#include <unistd.h> +#include <linux/rtc.h> +#include <errno.h> +#include <time.h> + +int rtc_fd = -1; +char *TCID = "rtc01"; +int TST_TOTAL = 3; + + +/* Read and Alarm Tests : Read test reads the Date/time from RTC + * while Alarm test, sets the alarm to 5 seconds in future and + * waits for it to ring.The ioctls tested in these tests are + * RTC_RD_TIME, RTC_ALM_SET, RTC_ALM_READ, RTC_AIE_OFF */ + +void read_alarm_test(void) +{ + struct rtc_time rtc_tm; + int ret; + unsigned long data; + fd_set rfds; + struct timeval tv; + + tst_resm(TINFO, "RTC READ TEST:"); + + /*Read RTC Time*/ + ret = ioctl(rtc_fd, RTC_RD_TIME, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_RD_TIME ioctl failed"); + return; + } + + tst_resm(TPASS, "RTC READ TEST Passed"); + + tst_resm(TINFO, "Current RTC date/time is %d-%d-%d, %02d:%02d:%02d.", + rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900, + rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); + + tst_resm(TINFO, "RTC ALARM TEST :"); + + /*set Alarm to 5 Seconds*/ + rtc_tm.tm_sec += 5; + if (rtc_tm.tm_sec >= 60) { + rtc_tm.tm_sec %= 60; + rtc_tm.tm_min++; + } + + if (rtc_tm.tm_min == 60) { + rtc_tm.tm_min = 0; + rtc_tm.tm_hour++; + } + + if (rtc_tm.tm_hour == 24) + rtc_tm.tm_hour = 0; + + ret = ioctl(rtc_fd, RTC_ALM_SET, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_ALM_SET ioctl failed"); + return; + } + + /*Read current alarm time*/ + ret = ioctl(rtc_fd, RTC_ALM_READ, &rtc_tm); + if (ret == -1) { + tst_resm(TFAIL, "RTC_ALM_READ ioctl failed"); + return; + } + + tst_resm(TINFO, "Alarm time set to %02d:%02d:%02d.", + rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec); + /* Enable alarm interrupts */ + ret = ioctl(rtc_fd, RTC_AIE_ON, 0); + if (ret == -1) { + tst_resm(TINFO, "RTC_AIE_ON ioctl failed"); + return; + } + + tst_resm(TINFO, "Waiting 5 seconds for the alarm..."); + + tv.tv_sec = 6;/*set 6 seconds as the time out*/ + tv.tv_usec = 0; + + FD_ZERO(&rfds); + FD_SET(rtc_fd, &rfds); + + ret = select(rtc_fd + 1, &rfds, NULL, NULL, &tv);/*wait for alarm*/ + + if (ret == -1) { + tst_resm(TFAIL, "select failed"); + return; + } else if (ret) { + ret = read(rtc_fd, &data, sizeof(unsigned long)); + if (ret == -1) { + tst_resm(TFAIL, "read failed"); + return; + } + tst_resm(TINFO, "Alarm rang."); + } else { + tst_resm(TFAIL, "Timed out waiting for the alarm"); + return; + } + + /* Disable alarm interrupts */ + ret = ioctl(rtc_fd, RTC_AIE_OFF, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_AIE_OFF ioctl failed"); + return; + } + tst_resm(TPASS, "RTC ALARM TEST Passed"); +} + +/* Update_interrupts_test :Once the Update interrupts is enabled, + * the RTC gives interrupts (1/sec) on the interrupts line(if the rtc + * has one). This is tested by enabling the update interrupts + * and then waiting for 5 interrupts.*/ + +void update_interrupts_test(void) +{ + int ret, i; + unsigned long data; + fd_set rfds; + struct timeval tv; + + tst_resm(TINFO, "RTC UPDATE INTERRUPTS TEST :"); + /*Turn on update interrupts*/ + ret = ioctl(rtc_fd, RTC_UIE_ON, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_UIE_ON ioctl failed"); + return; + } + + tst_resm(TINFO, "Waiting for 5 update interrupts..."); + for (i = 1; i < 6; i++) { + + tv.tv_sec = 2; /*2 sec time out for each interrupt*/ + tv.tv_usec = 0; + + FD_ZERO(&rfds); + FD_SET(rtc_fd, &rfds); + + ret = select(rtc_fd + 1, &rfds, NULL, NULL, &tv); + if (ret == -1) { + tst_resm(TFAIL, "select failed"); + return; + } else if (ret) { + ret = read(rtc_fd, &data, sizeof(unsigned long)); + if (ret == -1) { + tst_resm(TFAIL, "read failed"); + return; + } + tst_resm(TINFO, "Update interrupt %d", i); + } else { + tst_resm(TFAIL, + "Timed out waiting for the update interrupt"); + return; + } + } + + /* Turn off update interrupts */ + ret = ioctl(rtc_fd, RTC_UIE_OFF, 0); + if (ret == -1) { + tst_resm(TFAIL, "RTC_UIE_OFF ioctl failed"); + return; + } + tst_resm(TPASS, "RTC UPDATE INTERRUPTS TEST Passed"); +} + +int main(int argc, char **argv) +{ + char *rtc_dev = "/dev/rtc"; + + if (argc == 2) + rtc_dev = argv[1]; + + rtc_fd = open(rtc_dev, O_RDONLY); + + if (rtc_fd < 0) + tst_brkm(TBROK | TERRNO, tst_exit, "couldn't open %s", rtc_dev); + + /*Read and alarm tests*/ + read_alarm_test(); + + /*Update interrupts test*/ + update_interrupts_test(); + + close(rtc_fd); + + tst_resm(TINFO, "RTC Tests Done!"); + return 0; +} diff --git a/testcases/kernel/security/Makefile b/testcases/kernel/security/Makefile index a23ce8f..52b8d06 100644 --- a/testcases/kernel/security/Makefile +++ b/testcases/kernel/security/Makefile @@ -29,6 +29,9 @@ include $(top_srcdir)/include/mk/env_pre.mk ifeq ($(strip $(CAP_LIBS)),) FILTER_OUT_DIRS := cap_bound filecaps endif +ifeq ($(HAVE_SETCAP),false) +FILTER_OUT_DIRS += filecaps +endif # XXX (garrcoop): avoid compilation failures on RHEL 5.4, as reported by # Mitani-san, because of policy versioning issues... diff --git a/testcases/kernel/security/cap_bound/cap_bounds_r.c b/testcases/kernel/security/cap_bound/cap_bounds_r.c index 917d889..0b1c5b3 100644 --- a/testcases/kernel/security/cap_bound/cap_bounds_r.c +++ b/testcases/kernel/security/cap_bound/cap_bounds_r.c @@ -32,21 +32,6 @@ #include <sys/prctl.h> #include <test.h> -#ifndef CAP_LAST_CAP -#warning out-of-date capability.h does not define CAP_LAST_CAP -#define CAP_LAST_CAP 28 /* be ultra-conservative */ -#endif - -#ifndef CAP_BSET_READ -#warning CAP_BSET_READ not defined -#define CAP_BSET_READ 23 -#endif - -#ifndef CAP_BSET_DROP -#warning CAP_BSET_DROP not defined -#define CAP_BSET_DROP 24 -#endif - char *TCID = "cap_bounds_r"; int TST_TOTAL=1; @@ -59,17 +44,27 @@ int main(int argc, char *argv[]) int i; for (i=0; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != 1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, %d) returned %d\n", i, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, %d) returned %d\n", i, ret); if (ret == -1) tst_resm(TINFO, "errno was %d\n", errno); tst_exit(); } } - ret = prctl(CAP_BSET_READ, -1); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, -1); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, -1) returned %d\n", -1, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, -1) returned %d\n", ret); tst_exit(); } @@ -79,13 +74,18 @@ int main(int argc, char *argv[]) * testing... So let's take an insanely high value */ #define INSANE 63 #define max(x,y) (x > y ? x : y) - ret = prctl(CAP_BSET_READ, max(INSANE,CAP_LAST_CAP+1)); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, max(INSANE,CAP_LAST_CAP+1)); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_READ, %d) returned %d\n", CAP_LAST_CAP+1, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_READ, %d) returned %d\n", CAP_LAST_CAP+1, ret); tst_resm(TINFO, " %d is CAP_LAST_CAP+1 and should not exist\n", CAP_LAST_CAP+1); tst_exit(); } - tst_resm(TPASS, "CAP_BSET_READ tests passed\n"); + tst_resm(TPASS, "PR_CAPBSET_READ tests passed\n"); #else tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif diff --git a/testcases/kernel/security/cap_bound/cap_bounds_rw.c b/testcases/kernel/security/cap_bound/cap_bounds_rw.c index 9129c4e..827a305 100644 --- a/testcases/kernel/security/cap_bound/cap_bounds_rw.c +++ b/testcases/kernel/security/cap_bound/cap_bounds_rw.c @@ -31,21 +31,6 @@ #include <sys/prctl.h> #include <test.h> -#ifndef CAP_LAST_CAP -#warning out-of-date capability.h does not define CAP_LAST_CAP -#define CAP_LAST_CAP 28 /* be ultra-conservative */ -#endif - -#ifndef CAP_BSET_READ -#warning CAP_BSET_READ not defined -#define CAP_BSET_READ 23 -#endif - -#ifndef CAP_BSET_DROP -#warning CAP_BSET_DROP not defined -#define CAP_BSET_DROP 24 -#endif - char *TCID = "cap_bounds_rw"; int TST_TOTAL=1; @@ -57,7 +42,12 @@ int check_remaining_caps(int lastdropped) int ret; for (i=0; i <= lastdropped; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret == -1) { tst_resm(TBROK, "Failed to read bounding set during sanity check\n"); tst_exit(); @@ -68,7 +58,12 @@ int check_remaining_caps(int lastdropped) } } for (; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_READ, i); +#if HAVE_DECL_PR_CAPBSET_READ + ret = prctl(PR_CAPBSET_READ, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret == -1) { tst_resm(TBROK, "Failed to read bounding set during sanity check\n"); tst_exit(); @@ -86,9 +81,14 @@ int main(int argc, char *argv[]) int ret = 1; int i; - ret = prctl(CAP_BSET_DROP, -1); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_READ, -1); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, -1) returned %d\n", ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, -1) returned %d\n", ret); tst_exit(); } /* Ideally I'd check CAP_LAST_CAP+1, but userspace @@ -97,16 +97,26 @@ int main(int argc, char *argv[]) * testing... So let's take an insanely high value */ #define INSANE 63 #define max(x,y) (x > y ? x : y) - ret = prctl(CAP_BSET_DROP, max(INSANE,CAP_LAST_CAP+1)); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_DROP, max(INSANE,CAP_LAST_CAP+1)); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != -1) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, %d) returned %d\n", max(INSANE, CAP_LAST_CAP+1), ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, %d) returned %d\n", max(INSANE, CAP_LAST_CAP+1), ret); tst_resm(TINFO, " %d is should not exist\n", max(INSANE, CAP_LAST_CAP+1)); tst_exit(); } for (i=0; i<=CAP_LAST_CAP; i++) { - ret = prctl(CAP_BSET_DROP, i); +#if HAVE_DECL_PR_CAPBSET_DROP + ret = prctl(PR_CAPBSET_DROP, i); +#else + errno = ENOSYS; + ret = -1; +#endif if (ret != 0) { - tst_resm(TFAIL, "prctl(CAP_BSET_DROP, %d) returned %d\n", i, ret); + tst_resm(TFAIL, "prctl(PR_CAPBSET_DROP, %d) returned %d\n", i, ret); if (ret == -1) tst_resm(TINFO, "errno was %d\n", errno); tst_exit(); @@ -122,6 +132,6 @@ int main(int argc, char *argv[]) tst_exit(); } } - tst_resm(TPASS, "CAP_BSET_DROP tests passed\n"); + tst_resm(TPASS, "PR_CAPBSET_DROP tests passed\n"); tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c b/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c index 894e0a5..c6c34c0 100644 --- a/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c +++ b/testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c @@ -39,9 +39,11 @@ int TST_TOTAL=2; int errno; +#if HAVE_SYS_CAPABILITY_H +#if HAVE_DECL_PR_CAPBSET_READ && HAVE_DECL_PR_CAPBSET_DROP +#ifdef HAVE_LIBCAP int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H int ret = 1; cap_value_t v[1]; cap_flag_value_t f; @@ -49,12 +51,7 @@ int main(int argc, char *argv[]) /* We pick a random capability... let's use CAP_SYS_ADMIN */ /* make sure we have the capability now */ -#if HAVE_DECL_CAP_BSET_READ - ret = prctl(CAP_BSET_READ, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_READ, CAP_SYS_ADMIN); if (ret != 1) { tst_resm(TBROK, "Not starting with CAP_SYS_ADMIN\n"); tst_exit(); @@ -66,47 +63,23 @@ int main(int argc, char *argv[]) tst_resm(TBROK, "Failed to create cap_sys_admin+i cap_t (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#else - errno = ENOSYS; - ret = -1; -#endif if (ret) { tst_resm(TBROK, "Failed to cap_set_proc with cap_sys_admin+i (ret %d errno %d)\n", ret, errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - errno = ENOSYS; - ret = -1; -#endif -#else - errno = ENOSYS; - ret = -1; -#endif if (ret || f != CAP_SET) { tst_resm(TBROK, "Failed to add CAP_SYS_ADMIN to pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -114,18 +87,8 @@ int main(int argc, char *argv[]) } /* test 1: is CAP_SYS_ADMIN still in pI? */ -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - errno = ENOSYS; - ret = -1; -#endif -#else - errno = ENOSYS; - ret = -1; -#endif if (ret || f != CAP_SET) { tst_resm(TFAIL, "CAP_SYS_ADMIN not in pI after dropping from bounding set\n"); tst_exit(); @@ -144,24 +107,24 @@ int main(int argc, char *argv[]) tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(tmpcap); -#endif /* test 2: can we put it back in pI? */ -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#endif if (ret == 0) { /* success means pI was not bounded by X */ tst_resm(TFAIL, "Managed to put CAP_SYS_ADMIN back into pI though not in X\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif tst_resm(TPASS, "Couldn't put CAP_SYS_ADMIN back into pI when not in bounding set\n"); -#else +#else /* HAVE_LIBCAP */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* HAVE_DECL_PR_CAPBSET_READ && HAVE_DECL_PR_CAPBSET_DROP */ + tst_resm(TCONF, "System doesn't have CAPBSET prctls."); +#endif +#else /* HAVE_SYS_CAPABILITY_H */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/check_pe.c b/testcases/kernel/security/cap_bound/check_pe.c index 2e0451a..f621e70 100644 --- a/testcases/kernel/security/cap_bound/check_pe.c +++ b/testcases/kernel/security/cap_bound/check_pe.c @@ -40,9 +40,10 @@ int TST_TOTAL=1; int errno; +#if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H int ret = 1; cap_flag_value_t f; cap_t cur; @@ -58,26 +59,14 @@ int main(int argc, char *argv[]) tst_exit(); } -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_EFFECTIVE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "cap_get_flag failed (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif if (n == 1) { if (f == CAP_SET) { tst_resm(TPASS, "cap is in pE\n"); @@ -91,8 +80,11 @@ int main(int argc, char *argv[]) tst_exit(); } tst_resm(TFAIL, "Cap is in pE\n"); -#else +#else /* libcap */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* capability_h */ + tst_resm(TCONF, "System doesn't have sys/capability.h"); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/dummy.c b/testcases/kernel/security/cap_bound/dummy.c index ad65007..e882940 100644 --- a/testcases/kernel/security/cap_bound/dummy.c +++ b/testcases/kernel/security/cap_bound/dummy.c @@ -5,31 +5,21 @@ #include <sys/capability.h> #endif -#define END \ - printf("System doesn't support POSIX capabilities.\n"); \ - return 1 - int main() { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP cap_t cur; -#if HAVE_DECL_CAP_SET_PROC -#if HAVE_DECL_CAP_FROM_TEXT cur = cap_from_text("all=eip"); cap_set_proc(cur); -#else - END; -#endif -#else - END; -#endif -#if HAVE_DECL_CAP_FREE cap_free(cur); -#else - END; + return 0; +#else /* libcap */ + printf("System doesn't support POSIX capabilities.\n"); + return 1; #endif -#else - END; +#else /* capability_h */ + printf("System doesn't support sys/capability.h\n"); + return 1; #endif - return 0; } diff --git a/testcases/kernel/security/cap_bound/exec_with_inh.c b/testcases/kernel/security/cap_bound/exec_with_inh.c index 21c60fd..123f665 100644 --- a/testcases/kernel/security/cap_bound/exec_with_inh.c +++ b/testcases/kernel/security/cap_bound/exec_with_inh.c @@ -42,59 +42,34 @@ int errno; int main(int argc, char *argv[]) { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int ret = 1; cap_flag_value_t f; cap_t cur = 0; /* Make sure CAP_SYS_ADMIN is in pI */ -#if HAVE_DECL_CAP_FROM_TEXT cur = cap_from_text("all=eip"); -#endif if (!cur) { tst_resm(TBROK, "Failed to create cap_sys_admin+i cap_t (errno %d)\n", errno); tst_exit(); } -#if HAVE_DECL_CAP_SET_PROC ret = cap_set_proc(cur); -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "Failed to cap_set_proc with cap_sys_admin+i (ret %d errno %d)\n", ret, errno); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (ret || f != CAP_SET) { tst_resm(TBROK, "Failed to add CAP_SYS_ADMIN to pI\n"); tst_exit(); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -104,8 +79,11 @@ int main(int argc, char *argv[]) /* execute "check_pe 1" */ execl("check_pe", "check_pe", "1", NULL); tst_resm(TBROK, "Failed to execute check_pe (errno %d)\n", errno); -#else +#else /* HAVE_LIBCAP */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* HAVE_SYS_CAPABILITY_H */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/cap_bound/exec_without_inh.c b/testcases/kernel/security/cap_bound/exec_without_inh.c index 81216f3..df3c4d9 100644 --- a/testcases/kernel/security/cap_bound/exec_without_inh.c +++ b/testcases/kernel/security/cap_bound/exec_without_inh.c @@ -42,39 +42,20 @@ int errno; int main(int argc, char *argv[]) { #if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP int ret = 1; cap_flag_value_t f; cap_value_t v[1]; cap_t cur; /* Make sure CAP_SYS_ADMIN is not in pI */ -#if HAVE_DECL_CAP_GET_FLAG -#if HAVE_DECL_CAP_GET_PROC cur = cap_get_proc(); ret = cap_get_flag(cur, CAP_SYS_ADMIN, CAP_INHERITABLE, &f); -#else - ret = -1; - errno = ENOSYS; -#endif -#else - ret = -1; - errno = ENOSYS; -#endif if (f == CAP_SET) { v[0] = CAP_SYS_ADMIN; -#if HAVE_DECL_CAP_SET_FLAG ret = cap_set_flag(cur, CAP_INHERITABLE, 1, v, CAP_CLEAR); -#else - ret = -1; - errno = ENOSYS; -#endif -#if HAVE_DECL_CAP_SET_PROC if (!ret) ret = cap_set_proc(cur); -#else - ret = -1; - errno = ENOSYS; -#endif if (ret) { tst_resm(TBROK, "Failed to drop cap_sys_admin from pI\n"); tst_exit(); @@ -83,17 +64,10 @@ int main(int argc, char *argv[]) tst_brkm(TBROK | TERRNO, tst_exit, "Failed to add \ CAP_SYS_ADMIN to pI"); } -#if HAVE_DECL_CAP_FREE cap_free(cur); -#endif /* drop the capability from bounding set */ -#if HAVE_DECL_CAP_BSET_DROP - ret = prctl(CAP_BSET_DROP, CAP_SYS_ADMIN); -#else - errno = ENOSYS; - ret = -1; -#endif + ret = prctl(PR_CAPBSET_DROP, CAP_SYS_ADMIN); if (ret) { tst_resm(TFAIL, "Failed to drop CAP_SYS_ADMIN from bounding set.\n"); tst_resm(TINFO, "(ret=%d, errno %d)\n", ret, errno); @@ -103,8 +77,11 @@ int main(int argc, char *argv[]) /* execute "check_pe 0" */ execl("check_pe", "check_pe", "0", NULL); tst_resm(TBROK, "Failed to execute check_pe (errno %d)\n", errno); -#else +#else /* libcap */ tst_resm(TCONF, "System doesn't have POSIX capabilities."); #endif +#else /* capability_h */ + tst_resm(TCONF, "System doesn't have sys/capability.h."); +#endif tst_exit(); } diff --git a/testcases/kernel/security/filecaps/c.c b/testcases/kernel/security/filecaps/c.c new file mode 100644 index 0000000..5e1696c --- /dev/null +++ b/testcases/kernel/security/filecaps/c.c @@ -0,0 +1,45 @@ +/******************************************************************************/ +/* */ +/* Copyright (c) International Business Machines Corp., 2008 */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +/* the GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/******************************************************************************/ + + +#include <stdio.h> +#include <sys/capability.h> + +int main() +{ + +#ifdef HAVE_LIBCAP + cap_t caps, caps2; + int ret; + + caps = cap_from_text("cap_setpcap+ep"); + caps2 = cap_from_text("cap_setpcap+ep"); + ret = cap_set_proc(caps); + ret = cap_compare(caps, caps2); + printf("Caps were %sthe same\n", ret ? "not " : ""); + + cap_free(caps); + cap_free(caps2); + return ret; +#else + printf("System doesn't support full POSIX capabilities.\n"); + return 1; +#endif +} diff --git a/testcases/kernel/security/filecaps/check_simple_capset.c b/testcases/kernel/security/filecaps/check_simple_capset.c index 7851e01..6c7790d 100644 --- a/testcases/kernel/security/filecaps/check_simple_capset.c +++ b/testcases/kernel/security/filecaps/check_simple_capset.c @@ -27,28 +27,21 @@ int main() { -#if HAVE_SYS_CAPABILITY_H +#ifdef HAVE_LIBCAP cap_t caps, caps2; int ret; -#if HAVE_DECL_CAP_FROM_TEXT && HAVE_DECL_CAP_SET_PROC && HAVE_DECL_CAP_COMPARE caps = cap_from_text("cap_setpcap+ep"); caps2 = cap_from_text("cap_setpcap+ep"); ret = cap_set_proc(caps); ret = cap_compare(caps, caps2); -#else - printf("System doesn't support full POSIX capabilities.\n"); - return 1; -#endif printf("Caps were %sthe same\n", ret ? "not " : ""); -#if HAVE_DECL_CAP_FREE cap_free(caps); cap_free(caps2); -#endif return ret; #else - printf("System doesn't support POSIX capabilities.\n"); + printf("System doesn't support full POSIX capabilities.\n"); return 1; #endif } diff --git a/testcases/kernel/security/filecaps/checkforfilecaps.sh b/testcases/kernel/security/filecaps/checkforfilecaps.sh deleted file mode 100755 index 757d409..0000000 --- a/testcases/kernel/security/filecaps/checkforfilecaps.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -################################################################################ -## ## -## Copyright (c) International Business Machines Corp., 2008 ## -## ## -## This program is free software; you can redistribute it and#or modify ## -## it under the terms of the GNU General Public License as published by ## -## the Free Software Foundation; either version 2 of the License, or ## -## (at your option) any later version. ## -## ## -## This program is distributed in the hope that it will be useful, but ## -## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## -## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## -## for more details. ## -## ## -## You should have received a copy of the GNU General Public License ## -## along with this program; if not, write to the Free Software ## -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## -## ## -################################################################################ - -if ! check_simple_capset; then - echo Posix capabilities not compiled into the kernel. Please - echo modprobe capability or recompile your kernel with - echo CONFIG_SECURITY_CAPABILITIES=y. - exit 1 -fi - -touch testme -setcap cap_sys_admin=ip testme -ret=$? -rm -f testme -if [ $ret -ne 0 ]; then - echo File capabilities not compiled into kernel. Please - echo make sure your kernel is compiled with - echo CONFIG_SECURITY_FILE_CAPABILITIES=y. - exit 1 -fi - -exit 0 diff --git a/testcases/kernel/security/filecaps/checkforlibcap.sh b/testcases/kernel/security/filecaps/checkforlibcap.sh deleted file mode 100755 index cc7642e..0000000 --- a/testcases/kernel/security/filecaps/checkforlibcap.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh -################################################################################ -## ## -## Copyright (c) International Business Machines Corp., 2008 ## -## ## -## This program is free software; you can redistribute it and#or modify ## -## it under the terms of the GNU General Public License as published by ## -## the Free Software Foundation; either version 2 of the License, or ## -## (at your option) any later version. ## -## ## -## This program is distributed in the hope that it will be useful, but ## -## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## -## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## -## for more details. ## -## ## -## You should have received a copy of the GNU General Public License ## -## along with this program; if not, write to the Free Software ## -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## -## ## -################################################################################ - -if [ "x$CC" = "x" ]; then - export CC=gcc -fi -yesno=0 -if [ "$1" = "yesno" ]; then - yesno=1 -fi - -SETCAP=`which setcap` -if [ -z "${SETCAP}" ]; then - ret=1 -else - ret=0 -fi - -if [ $ret -eq 0 ]; then - #also test for -lcap - $CC -o check_simple_capset check_simple_capset.c -lcap \ - 2>/dev/null - - ret=$? -fi - -if [ $ret -eq 0 ]; then - #also test for xattr - $CC -o check_xattr check_xattr.c - ret=$? - if [ $ret -ne 0 ]; then - echo "Please install xattr headers" - fi -fi - -if [ $ret -ne 0 ]; then - if [ $yesno -eq 1 ]; then - echo no - else - exit 1 - fi -else - if [ $yesno -eq 1 ]; then - echo yes - else - exit 0 - fi -fi diff --git a/testcases/kernel/security/filecaps/filecapstest.sh b/testcases/kernel/security/filecaps/filecapstest.sh index 149cbc1..43582dc 100755 --- a/testcases/kernel/security/filecaps/filecapstest.sh +++ b/testcases/kernel/security/filecaps/filecapstest.sh @@ -19,23 +19,9 @@ ## ## ################################################################################ -checkforlibcap.sh -ret=$? -if [ $ret -ne 0 ]; then - echo "Filecaps 0 CONF : System doesn't support execution of the test" - echo setcap not installed. Please install libcap-2.11 or newer from - echo ftp://ftp.kernel.org/pub/linux/libs/security/linux-privs/libcap2 - exit 0 -fi -checkforfilecaps.sh -ret=$? -if [ $ret -ne 0 ]; then - echo "Filecaps 0 CONF : File capabilities not available" - exit 0 -fi - echo "Running in:" -cp $LTPROOT/testcases/bin/print_caps . +#rm -f print_caps +#cp $LTPROOT/testcases/bin/print_caps . mkfifo caps_fifo chmod 777 caps_fifo exit_code=0 @@ -60,4 +46,5 @@ if [ $tmp -ne 0 ]; then exit_code=$tmp fi +unlink caps_fifo exit $exit_code diff --git a/testcases/kernel/security/filecaps/inh_capped.c b/testcases/kernel/security/filecaps/inh_capped.c index 513fcb9..794e8b1 100644 --- a/testcases/kernel/security/filecaps/inh_capped.c +++ b/testcases/kernel/security/filecaps/inh_capped.c @@ -34,21 +34,17 @@ char *TCID = "filecaps"; int TST_TOTAL=1; +#ifdef HAVE_LIBCAP void debug_print_caps(char *when) { -#ifdef DEBUG char buf[2000]; tst_resm(TINFO, "%s", when); -#if HAVE_DECL_SET_CAP_TO_TEXT snprintf(buf, 2000, "%s", cap_to_text(cap_get_proc(), NULL)); -#endif tst_resm(TINFO, "%s", buf); -#endif } int set_caps_from_text(char *capstr) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_SET_CAP_SET_PROC && HAVE_DECL_SET_CAP_FREE cap_t caps = cap_from_text(capstr); int ret; @@ -59,14 +55,12 @@ int set_caps_from_text(char *capstr) ret = cap_set_proc(caps); cap_free(caps); return ret; -#else - return -1; -#endif } +#endif int main() { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_SET_CAPS_FROM_TEXT +#ifdef HAVE_LIBCAP int ret; debug_print_caps("start"); diff --git a/testcases/kernel/security/filecaps/print_caps.c b/testcases/kernel/security/filecaps/print_caps.c index 188856e..f0e9bce 100644 --- a/testcases/kernel/security/filecaps/print_caps.c +++ b/testcases/kernel/security/filecaps/print_caps.c @@ -40,7 +40,7 @@ int main(int argc, char *argv[]) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_GET_PROC && HAVE_DECL_CAP_TO_TEXT +#ifdef HAVE_LIBCAP cap_t cap = cap_get_proc(); int fd; int seqno = 0; diff --git a/testcases/kernel/security/filecaps/verify_caps_exec.c b/testcases/kernel/security/filecaps/verify_caps_exec.c index 16fcc0f..5250007 100644 --- a/testcases/kernel/security/filecaps/verify_caps_exec.c +++ b/testcases/kernel/security/filecaps/verify_caps_exec.c @@ -60,20 +60,18 @@ void usage(char *me) #define DROP_PERMS 0 #define KEEP_PERMS 1 +#ifdef HAVE_LIBCAP void print_my_caps() { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_GET_PROC && HAVE_DECL_CAP_TO_TEXT cap_t cap = cap_get_proc(); char *txt = cap_to_text(cap, NULL); tst_resm(TINFO, "\ncaps are %s\n", txt); cap_free(cap); cap_free(txt); -#endif } int drop_root(int keep_perms) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_FROM_TEXT && HAVE_DECL_CAP_SET_PROC int ret; if (keep_perms) @@ -89,15 +87,11 @@ int drop_root(int keep_perms) cap_set_proc(cap); cap_free(cap); } -#else - tst_resm(TCONF, "System doesn't have full POSIX capabilities support.\n"); -#endif tst_exit(); } int perms_test(void) { -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_SET_FILE int ret; cap_t cap; @@ -118,9 +112,6 @@ int perms_test(void) cap_free(cap); return ret; -#else - return -1; -#endif } #define FIFOFILE "caps_fifo" @@ -160,7 +151,6 @@ void read_from_fifo(char *buf) close(fd); } -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_CAP_COMPARE && HAVE_DECL_CAP_FREE && HAVE_DECL_CAP_TO_TEXT int fork_drop_and_exec(int keepperms, cap_t expected_caps) { @@ -219,12 +209,9 @@ int fork_drop_and_exec(int keepperms, cap_t expected_caps) } return ret; } -#endif int caps_actually_set_test(void) { - -#if HAVE_SYS_CAPABILITY_H && HAVE_DECL_PR_CAPBSET_READ int whichcap, finalret = 0, ret; cap_t fcap, pcap, cap_fullpi; cap_value_t capvalue[1]; @@ -399,17 +386,15 @@ int caps_actually_set_test(void) cap_free(cap_fullpi); return finalret; -#else - return -1; -#endif } +#endif int main(int argc, char *argv[]) { +#ifdef HAVE_LIBCAP if (argc < 2) usage(argv[0]); -#if HAVE_SYS_CAPABILITY_H int ret = 0; switch(atoi(argv[1])) { diff --git a/testcases/network/multicast/mc_cmds/mc_cmds b/testcases/network/multicast/mc_cmds/mc_cmds index d537103..f43dd95 100755 --- a/testcases/network/multicast/mc_cmds/mc_cmds +++ b/testcases/network/multicast/mc_cmds/mc_cmds @@ -127,7 +127,7 @@ for eth in $IFNAME cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts | grep 1 > /dev/null if [ $? -eq 0 ] then - end_testcase "Multicast ping disabled on this system (this is normal on post 2005 kernels)" + end_testcase "Multicast ping disabled on this system (this is normal on post year:2005 kernels)" fi # Do the ping tests: Execute ping 224.0.0.1 - Verify that the proper diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c index 767f1b0..c0746c0 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c @@ -10,9 +10,7 @@ * This test case will call sem_getvalue to update the location referenced * by the semaphpre without effecting the state of the semaphore. The * updated value represents the actual semaphore value when it was called. -*/ - - + */ #include <stdio.h> #include <errno.h> @@ -20,29 +18,29 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "1-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } @@ -50,7 +48,8 @@ int main() { /* printf("Current value is: %d\n", val); */ - if (val == 1 ) { + + if (val == 1) { puts("TEST PASSED"); sem_close(mysemp); sem_unlink(semname); diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c index ac19af8..06814fb 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c @@ -8,8 +8,7 @@ /* * When semaphore is locked, then the value returned by sem_getvalue is zero. -*/ - + */ #include <stdio.h> #include <errno.h> @@ -17,35 +16,35 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "2-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } /* Lock Semaphore */ - if (sem_trywait(mysemp) == -1 ) { + if (sem_trywait(mysemp) == -1) { perror(ERROR_PREFIX "trywait"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) < 0 ) { + if (sem_getvalue(mysemp, &val) < 0) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c index 5918ceb..9989e48 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c @@ -83,18 +83,15 @@ /*************************** Test case ***********************************/ /******************************************************************************/ -void * threaded ( void * arg ) +void *threaded(void * arg) { int ret; - do - { + do { ret = sem_wait( arg ); - } - while ( ( ret != 0 ) && ( errno == EINTR ) ); + } while (( ret != 0 ) && (errno == EINTR)); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to wait for the semaphore" ); } @@ -103,7 +100,7 @@ void * threaded ( void * arg ) /* The main test function. */ -int main( int argc, char * argv[] ) +int main(int argc, char *argv[]) { int ret, val; sem_t sem; @@ -113,71 +110,61 @@ int main( int argc, char * argv[] ) output_init(); /* Initialize semaphore */ - ret = sem_init( &sem, 0, 0 ); + ret = sem_init(&sem, 0, 0); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to init semaphore" ); } /* Create the thread */ - ret = pthread_create( &th, NULL, threaded, &sem ); + ret = pthread_create(&th, NULL, threaded, &sem); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( ret, "Failed to create the thread" ); } /* Sleep 1 sec so the thread enters the sem_wait call */ - sleep( 1 ); + sleep(1); /* Check value */ - ret = sem_getvalue( &sem, &val ); + ret = sem_getvalue(&sem, &val); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to get semaphore value" ); } - if ( ( val != 0 ) && ( val != -1 ) ) - { - output( "Val: %d\n", val ); - FAILED( "Semaphore count is neither 0 nor # of waiting processes" ); + if ((val != 0) && (val != -1)) { + output("Val: %d\n", val ); + FAILED("Semaphore count is neither 0 nor # of waiting processes"); } /* Post the semaphore */ - ret = sem_post( &sem ); + ret = sem_post(&sem); - if ( ret != 0 ) - { - UNRESOLVED( errno, "Failed to post the semaphore" ); + if (ret != 0) { + UNRESOLVED(errno, "Failed to post the semaphore"); } /* Join the thread */ - ret = pthread_join( th, NULL ); + ret = pthread_join(th, NULL); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( ret, "Failed to join the thread" ); } - /* Destroy the semaphore */ - ret = sem_destroy( &sem ); + ret = sem_destroy(&sem); - if ( ret != 0 ) - { + if (ret != 0) { UNRESOLVED( errno, "Failed to sem_destroy" ); } /* Test passed */ #if VERBOSE > 0 - output( "Test passed\n" ); + output("Test passed\n"); #endif PASSED; } - - diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c index 0774acb..2507fd3 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c @@ -9,9 +9,7 @@ /* * Upon successful completion of calling sem_getvalue, it shall return a value * of zero. -*/ - - + */ #include <stdio.h> #include <errno.h> @@ -19,29 +17,29 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "4-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[28]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 1); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) != 0 ) { + if (sem_getvalue(mysemp, &val) != 0) { puts("TEST FAILED"); return PTS_FAIL; } else { diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c index c77b19c..1f17f5f 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c @@ -9,8 +9,7 @@ /* * This test case verifies that calling sem_getvalue doesn't change the * state of the semaphore. -*/ - + */ #include <stdio.h> #include <errno.h> @@ -18,40 +17,40 @@ #include <semaphore.h> #include <sys/stat.h> #include <fcntl.h> +#include <limits.h> #include "posixtest.h" #define TEST "5-1" #define FUNCTION "sem_getvalue" #define ERROR_PREFIX "unexpected error: " FUNCTION " " TEST ": " - -int main() { - - char semname[20]; +int main(void) +{ + char semname[NAME_MAX - 4]; sem_t *mysemp; int val; - sprintf(semname, "/" FUNCTION "_" TEST "_%d", getpid()); + snprintf(semname, sizeof(semname), "/" FUNCTION "_" TEST "_%d", getpid()); mysemp = sem_open(semname, O_CREAT, 0777, 4); - if( mysemp == SEM_FAILED || mysemp == NULL ) { + if (mysemp == SEM_FAILED || mysemp == NULL) { perror(ERROR_PREFIX "sem_open"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } - if ( sem_trywait(mysemp) == -1 ) { + if (sem_trywait(mysemp) == -1) { perror(ERROR_PREFIX "sem_trywait"); return PTS_UNRESOLVED; } - if( sem_getvalue(mysemp, &val) == -1 ) { + if (sem_getvalue(mysemp, &val) == -1) { perror(ERROR_PREFIX "sem_getvalue"); return PTS_UNRESOLVED; } @@ -60,7 +59,7 @@ int main() { printf("Current value is: %d\n", val); */ - if (val == 3 ) { + if (val == 3) { puts("TEST PASSED"); sem_close(mysemp); sem_unlink(semname); diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c index b2db995..86007b7 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c @@ -161,7 +161,6 @@ int main() } fprintf(stderr, "P: child_1:%d forked\n", c_1); - sleep(1); c_2 = fork(); if (c_2 == 0) { @@ -198,6 +197,9 @@ int main() //printf("val = %d\n", val); } while (val != 0); */ + + /* Synchronization required before release the lock */ + sleep(1); /* Ok, let's release the lock */ fprintf(stderr, "P: release lock\n"); sem_post(sem); diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c index f344b19..22b1f40 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c @@ -15,12 +15,22 @@ #include <signal.h> #include <stdio.h> #include <stdlib.h> +#include <errno.h> +#include <string.h> #include "posixtest.h" -int main() +int main(void) { + sigset_t st; + sigemptyset(&st); + sigaddset(&st, SIGCHLD); - if (sigset(SIGCHLD,SIG_HOLD) != SIG_HOLD) { + if (sigprocmask(SIG_BLOCK, &st, NULL) < 0) { + printf("Test FAILED: sigprocmask(): %s\n", strerror(errno)); + return PTS_FAIL; + } + + if (sigset(SIGCHLD, SIG_HOLD) != SIG_HOLD) { printf("Test FAILED: sigset() didn't return SIG_HOLD\n"); return PTS_FAIL; } hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-31 13:21:40
|
The branch, master, has been updated via 18a3509e21b2a0455f276e1c4aa74174f5a93f7c (commit) via 8b062bfd3f4c7041b52f1de03cc1a7d4bffc5397 (commit) via f269fc8247563f3fe4c412fcd8fc6522d8a34753 (commit) via f5f06f48d95ce6a3ae82f6bfbb3564cf67fe5e2f (commit) via df6f6981dced07553a9978d05a5bdfd9b80e354d (commit) from 3759a04145f3d9d8cd4abeab77112d79f4fc30ad (commit) - Log ----------------------------------------------------------------- commit 18a3509e21b2a0455f276e1c4aa74174f5a93f7c Merge: 3759a04145f3d9d8cd4abeab77112d79f4fc30ad 8b062bfd3f4c7041b52f1de03cc1a7d4bffc5397 Author: Rishikesh K Rajak <ris...@li...> Date: Wed Mar 31 18:50:48 2010 +0530 Merge branches 'next' and 'master' commit 8b062bfd3f4c7041b52f1de03cc1a7d4bffc5397 Merge: df6f6981dced07553a9978d05a5bdfd9b80e354d f269fc8247563f3fe4c412fcd8fc6522d8a34753 Author: Rishikesh K Rajak <ris...@li...> Date: Wed Mar 31 18:50:35 2010 +0530 Merge branches 'pu' and 'next' into next commit f269fc8247563f3fe4c412fcd8fc6522d8a34753 Author: Rishikesh K Rajak <ris...@li...> Date: Wed Mar 31 18:48:05 2010 +0530 ./runltp -f fs_readonly fails with: cmdline="$LTPROOT/testscripts/test_robind.sh" contacts="" analysis=exit <<<test_output>>> incrementing stop /tmp/fs19258/dir1 /tmp/fs19258 wc: /opt/ltp/testscripts/fs_ro_tests: No such file or directory TDIR is /tmp/fs19258/dir1 seq: missing operand Try `seq --help' for more information. /tmp/fs19258 /tmp/fs19258/dir2-bound /tmp/fs19258 wc: /opt/ltp/testscripts/fs_ro_tests: No such file or directory TDIR is /tmp/fs19258/dir2-bound seq: missing operand Try `seq --help' for more information. /tmp/fs19258 /tmp/fs19258/dir3-ro /tmp/fs19258 wc: /opt/ltp/testscripts/fs_ro_tests: No such file or directory TDIR is /tmp/fs19258/dir3-ro seq: missing operand Try `seq --help' for more information. /tmp/fs19258 <<<execution_status>>> initiation_status="ok" duration=9 termination_type=exited termination_id=0 corefile=no cutime=4 cstime=220 <<<test_end>>> INFO: ltp-pan reported all tests PASS This patch fixes the problem. Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: testscripts/Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/testscripts/Makefile b/testscripts/Makefile index c0cec15..870cf5c 100644 --- a/testscripts/Makefile +++ b/testscripts/Makefile @@ -28,7 +28,7 @@ INSTALL_DIR := testscripts INSTALL_MODE := 00755 -INSTALL_TARGETS := *.sh +INSTALL_TARGETS := *.sh fs_ro_tests MAKE_TARGETS := hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-03-31 13:47:43
|
The branch, master, has been updated via 02719d6f7e5cb252c0fcbfbaf26208d7196e46f2 (commit) from 18a3509e21b2a0455f276e1c4aa74174f5a93f7c (commit) - Log ----------------------------------------------------------------- commit 02719d6f7e5cb252c0fcbfbaf26208d7196e46f2 Author: Rishikesh K Rajak <ris...@li...> Date: Wed Mar 31 19:14:52 2010 +0530 Updated the documentation and return sensible message if testcase failed. ./runltp -f io_cd ... ERROR [line: open failed : No medium found ] ... After this patch the return error will be like this: ERROR [line: open failed /dev/cdrom : No medium found ] Which makes much more sense for user. Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: testcases/kernel/io/stress_cd/stress_cd.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/testcases/kernel/io/stress_cd/stress_cd.c b/testcases/kernel/io/stress_cd/stress_cd.c index e7d00b0..5e08ea9 100644 --- a/testcases/kernel/io/stress_cd/stress_cd.c +++ b/testcases/kernel/io/stress_cd/stress_cd.c @@ -222,7 +222,7 @@ int read_data (int num, unsigned long cksum) printf("\tThread [%d]: read_data()\n", num); if ((fd = open (file, O_RDONLY, NULL)) < 0) - sys_error ("open failed", __LINE__); + sys_error ("open failed /dev/cdrom", __LINE__); buffer = (char *) malloc (sizeof(char) * bufSize); assert (buffer); hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-04-01 04:41:15
|
The branch, master, has been updated via d2a9b9d3e04807fb4744dc7e778fe6e0c9543bc1 (commit) via 613db220bc78b3109934dbdf617a7d2b3b437295 (commit) via 36f76e82f935d496a47cbfb8ab1d2b9d74537181 (commit) from 02719d6f7e5cb252c0fcbfbaf26208d7196e46f2 (commit) - Log ----------------------------------------------------------------- commit d2a9b9d3e04807fb4744dc7e778fe6e0c9543bc1 Author: Rishikesh K Rajak <ris...@li...> Date: Thu Apr 1 10:10:33 2010 +0530 Merge branches 'next' and 'master' commit 613db220bc78b3109934dbdf617a7d2b3b437295 Author: Rishikesh K Rajak <ris...@li...> Date: Thu Apr 1 10:09:49 2010 +0530 Changelog from 2010-03-01 to 2010-03-31 Signed-off-by: Rishikesh K Rajak <ris...@li...> commit 36f76e82f935d496a47cbfb8ab1d2b9d74537181 Author: Rishikesh K Rajak <ris...@li...> Date: Wed Mar 31 19:30:56 2010 +0530 Merge branches 'master' and 'next' into next ----------------------------------------------------------------------- Summary of changes: ChangeLog | 1243 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 1242 insertions(+), 1 deletions(-) diff --git a/ChangeLog b/ChangeLog index 281bc86..a3ff04f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,1244 @@ -LTP-20100228 +LTP-20100331 + +commit f269fc8247563f3fe4c412fcd8fc6522d8a34753 +Author: Rishikesh K Rajak <ris...@li...> +Date: Wed Mar 31 18:48:05 2010 +0530 + +./runltp -f fs_readonly fails with: + +wc: /opt/ltp/testscripts/fs_ro_tests: No such file or directory +TDIR is /tmp/fs19258/dir2-bound +seq: missing operand +... +<<<test_end>>> +INFO: ltp-pan reported all tests PASS + +This patch fixes the problem. + +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +commit c58cf0cff52cc72179c6fb4303509a3f2db19945 +Author: Rishikesh K Rajak <ris...@li...> +Date: Wed Mar 31 15:30:14 2010 +0530 + +cgroup_fj_release_agent is not getting installed as it does not end with +*.sh. + +And + +Other fix is about the indentation of rtc device driver +testcases + +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Commit: 566d1af5a7111408601ea6cb64218585bee8d04a +Date: Thu, 25 Mar 2010 20:04:07 +0530 + +Merge commit '391e757d43b3ac33a4a435e319ee77b1daa6da76' + +Changed Files: + +Commit: 391e757d43b3ac33a4a435e319ee77b1daa6da76 +Date: Tue, 23 Mar 2010 20:07:34 +0530 + +Fix the proper return for testcase. +Reported By: Srinivasa R Chamarthy <sch...@li...> +Signed-off By: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +testcases/kernel/controllers/cgroup_fj/run_cgroup_test_fj.sh + +Commit: 008f0d2c45d52af059d7981685921fc53d7354bf +Date: Tue, 23 Mar 2010 20:05:26 +0530 + +These warning will appear when HAVE_LIBCAP is not defined. +c.c: In function âmainâ: +c.c:28: warning: unused variable âretâ +c.c:27: warning: unused variable âcaps2â +c.c:27: warning: unused variable âcapsâ + +Signed-off By: Rishikesh K Rajak<ris...@li...> + +Changed Files: + +testcases/kernel/security/filecaps/c.c + +Commit: b72a24c9eb339841a0c4b82d384a5b3ba10c9ecb +Date: Tue, 23 Mar 2010 14:26:21 +0530 + +Merge branches 'maint' and 'master' + +Changed Files: + +Commit: f102fd9735f01b4e2c9ae44f3c90d1a56d4d81f8 +Date: Tue, 23 Mar 2010 14:20:36 +0530 + +I have tested these on MIPS architecture and reproduced infinite waiting situation after applying this patch. (with strace no issue found ex: #strace ./8-1.test) As you said there may be issues in MIPS-POSIX library. it may take some time to fix these issues or may not be fixed. However, Iâll discuss this issue with MIPS folks in different thread. +ATM, my patch is not a good idea for MIPS architectures. +So, after your comments I have modified my patch and tested. +Here in this latest patch i did not change any thing regarding while loop. +I replaced sleep() in an appropriate place. +It is working fine on X86, ARM and MIPS. + +Signed-off-by: Naresh Kamboju < nar...@gm... > +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c + +Commit: 7ad24180d690306e129b84d49806f9f176a28d57 +Date: Tue, 23 Mar 2010 14:19:01 +0530 + +while running i found some unwanted messages and fixed those. You can Ack if it is correct fix. +===== error log ===== +Running in: +cp: cannot stat `/opt/ltp/testcases/bin/print_caps': No such file or directory +mkfifo: cannot create fifo `caps_fifo': File exists +cap_sys_admin tests +==== error log ====== + +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +testcases/kernel/security/filecaps/filecapstest.sh + +Commit: 2df915dc1da7c5d92e03856095d3f66601178e58 +Date: Mon, 22 Mar 2010 13:50:11 +0530 + +Revert "I have found abnormal behavior of sem_post/8-1.c test case under posix." +This reverts commit d40fd32af0d0ad7713b0cf6cd23daf1ee639d479. + +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +.gitignore + +Commit: c65b70531c8d383a957654ad5179cb302b405a3b +Date: Mon, 22 Mar 2010 13:38:45 +0530 + +Remaining patch for new file addition for commit:6e3dd83d9f575d98d76b8b3f642ad6e8793dbdfc + +Changed Files: + +m4/ltp-prctl.m4 +testcases/kernel/security/filecaps/c.c + +Commit: 95a376d4e50acd0c90bf749060a1974338a082a9 +Date: Mon, 22 Mar 2010 12:07:05 +0530 + +As pointed out by Cheng Shun Xia one of open posix conformace tests is testing return value from sigset(SIGCHLD, SIG_HOLD) and expect this value to be SIG_HOLD, however this is true only if SIGCHLD is already blocked so we must ensure that. Patch is attached. +Signed-off-by: Cyril Hrubis ch...@su... +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +testcases/open_posix_testsuite/conformance/interfaces/sigset/8-1.c + +Commit: 6e3dd83d9f575d98d76b8b3f642ad6e8793dbdfc +Date: Mon, 22 Mar 2010 12:04:09 +0530 + +Here's an attempt at fixing up and simplifying the autoconf for detecting libcap and prctl support. After this, make autotools etc work fine on my f12 system, and runltp -f cap_bounds passes. the filecaps tests refuse to run claiming to be unable to find setcap, which I'll worry about next week. +(I'm sure there is an AC_ macro for finding a command) + +And second patch : + +Remove the run-time checks and just have autoconf check for +libcap and setcap presence. + +After this, filecaps tests compile, install, and pass on f10 at least. + +Signed-off-by: Serge E. Hallyn <se...@us...> +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +configure.ac +m4/ltp-cap.m4 +testcases/kernel/security/Makefile +testcases/kernel/security/cap_bound/cap_bounds_r.c +testcases/kernel/security/cap_bound/cap_bounds_rw.c +testcases/kernel/security/cap_bound/cap_bset_inh_bounds.c +testcases/kernel/security/cap_bound/check_pe.c +testcases/kernel/security/cap_bound/dummy.c +testcases/kernel/security/cap_bound/exec_with_inh.c +testcases/kernel/security/cap_bound/exec_without_inh.c +testcases/kernel/security/filecaps/check_simple_capset.c +testcases/kernel/security/filecaps/checkforfilecaps.sh +testcases/kernel/security/filecaps/checkforlibcap.sh +testcases/kernel/security/filecaps/filecapstest.sh +testcases/kernel/security/filecaps/inh_capped.c +testcases/kernel/security/filecaps/print_caps.c +testcases/kernel/security/filecaps/verify_caps_exec.c + +Commit: 96a4822d72478abce6dceabc816f658ba4ded0d3 +Date: Mon, 22 Mar 2010 11:53:21 +0530 + +Merge branches 'next' and 'master' + +Changed Files: + +Commit: c700433fe26d24b975bf241668a9701548e6c21d +Date: Mon, 22 Mar 2010 11:16:51 +0530 + +Attached patch fixes possible buffer oveflow in sem_getvalue tests (the buffer overflow happens when getpid() returns number that couldn't fit into buffer) and also cleans coding style. +Signed-off-by: Cyril Hrubis ch...@su... +Acked-by: Garrett Cooper <yan...@gm...> + +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/1-1.c +testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-1.c +testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/2-2.c +testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/4-1.c +testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/5-1.c + +Commit: 4d574b9f3c82a58d88b97e201ac49cddf7bc5c24 +Date: Mon, 22 Mar 2010 10:43:41 +0530 + +Merge branch 'next' of ssh://ltp.git.sourceforge.net/gitroot/ltp/ltp-dev into next + +Changed Files: + +Commit: e7ed287c04bef2108fa544b0b86629e554403970 +Date: Mon, 22 Mar 2010 10:42:05 +0530 + +This commit contains Linux RTC device driver test cases. Currently RTC read test, Alarm test and Update interrupts tests are supported. +Tested-by: Rishikesh K Rajak <ris...@li...> +Signed-off-by: Silesh C V <Sil...@ln...> + +Changed Files: + +testcases/kernel/device-drivers/rtc/Makefile +testcases/kernel/device-drivers/rtc/README +testcases/kernel/device-drivers/rtc/rtc-test.c + +Commit: 965127e99f1c3e4035a3de621ca0c295de14448b +Date: Mon, 15 Mar 2010 11:53:31 +0530 + +Merge branches 'pu' and 'maint' into maint + +Changed Files: + +Commit: 0a52859d55cf93cdd310ec678868cb4d10e80728 +Date: Mon, 15 Mar 2010 11:50:53 +0530 + +Adding a wordy informationi, 2005 here represents as year not version of kernels. +Though we need to work on this testcase to provide under TCONF. + +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +testcases/network/multicast/mc_cmds/mc_cmds + +Commit: d05498f44de5d3e542b2031b458d84e907604728 +Date: Sat, 13 Mar 2010 12:50:13 +0530 + +Merge branches 'master' and 'pu' into pu + +Changed Files: + +Commit: 2784e9a6e36cacad4192f41a8c9044a85428ed27 +Date: Sat, 13 Mar 2010 12:49:29 +0530 + +Merge branches 'master' and 'maint' into maint + +Changed Files: + +Commit: b80fdefbd1843484e5a3ccc3d5748fee5b4cd1f7 +Date: Sat, 13 Mar 2010 12:47:38 +0530 + +Merge branches 'master' and 'next' into next + +Changed Files: + +Commit: 00c8b3450d151482e9f7424224fc8a64bff27fdd +Date: Wed, 10 Mar 2010 20:29:15 -0800 + +Merge branch 'master' of ssh://yab...@lt.../gitroot/ltp/ltp-dev + +Changed Files: + +Commit: a25f31b6f0a774b75ad2bf664f84ff0500086785 +Date: Wed, 10 Mar 2010 20:28:33 -0800 + +Update TODO with note about needing to replace pushd and popd logic in a few tests. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +TODO + +Commit: 007dce57f645ad796f8cb60a13de936ac04fd1e8 +Date: Wed, 10 Mar 2010 20:26:15 -0800 + +Hi, +I found following problem about "memcg_control" test. +--------- +/opt/ltp/testcases/bin/memcg_control_test.sh: line 30: [: : integer +expression expected +---------- + +This happens because of following process. +[ memcg_control_test.sh: line 30 ] +--------- +if [ "$(grep -w memory /proc/cgroups | cut -f4)" -ne "1" ]; then + echo "WARNING:" + echo "Either kernel does not support memory resource controller or +feature not ena +bled" + echo "Skipping all memcg_control testcases...." + exit 0 +fi +--------- + +"$(grep -w memory /proc/cgroups | cut -f4)" can't comparable with "1" +if "$(grep -w memory /proc/cgroups | cut -f4)" = nothing. + +How about fixing like the other "memcg" tests? + +Signed-off-by: Yuki Yao<y_...@ry...> +Acked-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/controllers/memcg/control/memcg_control_test.sh + +Commit: a3bb7abd2c1fb20dc4d93bef9cda2980f4339a6f +Date: Wed, 10 Mar 2010 18:34:57 +0530 + +Merge branches 'next' and 'master' + +Changed Files: + +Commit: 737694964966bcf7a807b335d51923ee9c9c27a5 +Date: Wed, 10 Mar 2010 18:32:35 +0530 + +To run filecap test, checkforlibcap.sh file is required to be there in /opt/ltp/testcases/bin +Otherwise you will get this error when you run filecap test. + +>>>> +/opt/ltp/testcases/bin/filecapstest.sh: line 22: checkforlibcap.sh: command not found +<<<< + +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +testcases/kernel/security/filecaps/Makefile + +Commit: 615e1e37de053855b6bd56bae8b00d8a17133f8a +Date: Wed, 10 Mar 2010 11:05:40 +0530 + +Merge branches 'master' and 'pu' into pu + +Changed Files: + +Commit: b8ed5460176838d9b714dddbc17685983b4a8b9b +Date: Wed, 10 Mar 2010 11:03:55 +0530 + +Merge branches 'master' and 'maint' into maint + +Changed Files: + +Commit: ce944320bea9e3d7044a36c64ef2e1719312370d +Date: Wed, 10 Mar 2010 11:03:42 +0530 + +Merge branches 'master' and 'next' into next + +Changed Files: + +Commit: 1a5506c97dcfda0bd16f83ca855bb633c47eea4c +Date: Wed, 10 Mar 2010 11:01:47 +0530 + +Fix make filed,, reported by Shi Weihua <sh...@cn...> It was my bad :( . +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +testcases/kernel/containers/Makefile + +Commit: 48c52fcd4e7668bc36bbe080f53462d410712b69 +Date: Wed, 10 Mar 2010 10:00:22 +0530 + +Instead of LIBS, it should be LDLIBS in container/Makefile +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +testcases/kernel/containers/Makefile + +Commit: c962f51674b971496e14ac4be0cc75da98b75fca +Date: Tue, 9 Mar 2010 21:53:25 +0530 + +Testing for post-receive-email +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +TODO + +Commit: 17905ceabf2dc20e978dfa4ea3682197ad01bf9a +Date: Tue, 9 Mar 2010 14:11:41 +0530 + +Merge branches 'next' and 'master' + +Changed Files: + +Commit: bdfe0b2a9dd720c3013225cc4aa1628e77888b24 +Date: Tue, 9 Mar 2010 14:05:46 +0530 + +Adding check_for_unshare.c file and linking the porper lib. +Signed-off-by: Rishikesh K Rajak <ris...@li...> +Reported-By: Shi Weihua <sh...@cn...> + +Changed Files: + +testcases/kernel/containers/Makefile +testcases/kernel/containers/check_for_unshare.c + +Commit: 716d29883b11107c32313b1836bea447fecbaf1e +Date: Tue, 9 Mar 2010 12:48:53 +0530 + +Quick fix for build failure with 8th Mar master tree. +Getting compilation error as: +================================================================== +buffer.c: In function âevbuffer_add_printfâ: +buffer.c:96: warning: implicit declaration of function âvasprintfâ +buffer.c:100: warning: pointer targets in passing argument 2 of âevbuffer_addâ differ in signedness +gcc -DHAVE_CONFIG_H -I. -I. -I. -Icompat -Wall -g -O2 -c evbuffer.c +gcc -DHAVE_CONFIG_H -I. -I. -I. -Icompat -Wall -g -O2 -c select.c +gcc -DHAVE_CONFIG_H -I. -I. -I. -Icompat -Wall -g -O2 -c poll.c +gcc -DHAVE_CONFIG_H -I. -I. -I. -Icompat -Wall -g -O2 -c epoll.c +gcc -DHAVE_CONFIG_H -I. -I. -I. -Icompat -Wall -g -O2 -c signal.c +rm -f libevent.a +ar cru libevent.a event.o buffer.o evbuffer.o select.o poll.o epoll.o signal.o +ar: -u: (PROGRAM ERROR) Option should have been recognized!? +Try `ar --help' or `ar --usage' for more information. +make[2]: *** [libevent.a] Error 64 +make[2]: Leaving directory `/root/ltp-dev/testcases/kernel/syscalls/libevent' +make[1]: *** [all-recursive] Error 1 +make[1]: Leaving directory `/root/ltp-dev/testcases/kernel/syscalls/libevent' +make: *** [all-recursive-am] Error 2 +:~/ltp-dev/testcases/kernel/syscalls/libevent # +================================================================= + +Signed-off-by: Rishikesh K Rajak <ris...@li...> + +Changed Files: + +testcases/kernel/syscalls/libevent/Makefile.in + +Commit: 58854395050b8a3bb2fa4e5e4401546925f6aad8 +Date: Tue, 9 Mar 2010 12:24:47 +0530 + +Commenting "make all" in run_freezer.sh file as it is stopping to run the freezer testcase +Signed-off By: Rishikesh K Rajak<ris...@li...> + +Changed Files: + +testcases/kernel/controllers/freezer/run_freezer.sh + +Commit: 886918830ae73a7f4b5cc2d9bf8554ee9f393ed8 +Date: Tue, 9 Mar 2010 12:07:48 +0530 + +Merge branches 'master' and 'next' into next + +Changed Files: + +Commit: e8e3c7598b82b54a7770c48a2422d5d6fa127045 +Date: Tue, 9 Mar 2010 12:04:03 +0530 + +Merge branches 'master' and 'maint' into maint + +Changed Files: + +Commit: 63f0a8f554d28b28b207f41e42182e1b789333b6 +Date: Tue, 9 Mar 2010 12:00:53 +0530 + +libcgroup_freezer , pushd/popd removal. +> I went over the libcgroup_freezer testcase and there are a number +> of areas which use pushd / popd. I realize this was for ease-of-use, +> but pushd / popd aren't functional built-ins with busybox and so the +> testcases fail on Debian based distros. Could you please fix this? +> Thanks, +> -Garrett + +I ported and tested your patch on top of latest git. And it works fine. + +Tested & Ported-By: Rishikesh K Rajak <ris...@li...> +Reported-By :Garrett Cooper <yan...@gm...> +Signed-off By: Matt Helsley <mat...@li...> + +Changed Files: + +testcases/kernel/controllers/freezer/libcgroup_freezer + +Commit: 71256e18bb4d21d1b82c4031a1983cb72ef215aa +Date: Mon, 8 Mar 2010 08:53:05 -0800 + +Clean up comment to note the actual problem. It was confusing before. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/syscalls/libevent/buffer.c + +Commit: 6d722f4ff2317c60f9fff1287af5d41cddca937e +Date: Mon, 8 Mar 2010 08:48:14 -0800 + +Use $TMP (which defaults to /tmp) rather than /tmp as $TMP can be parameterized via runltp, et all. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/controllers/freezer/libcgroup_freezer + +Commit: fb5821d2af94dd631dbd0ccfa80df1cf104f9a1f +Date: Mon, 8 Mar 2010 08:42:23 -0800 + +Replace pushd / popd with proper cd logic as busybox doesn't have pushd / popd. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/commands/unzip/unzip_tests.sh + +Commit: 4a1e63a8acc3f77459f6e308fc791f4205e027fd +Date: Mon, 8 Mar 2010 08:00:46 -0800 + +Fix _GNU_SOURCES macro requirement error. +It appears that there's a bug in our version of libevent where the requirement that _GNU_SOURCES be set prior to stdio being #include'd for vasprintf(3) wasn't being required until recent versions of glibc: + +... +buffer.c: In function âevbuffer_add_printfâ: +buffer.c:91: warning: implicit declaration of function âvasprintfâ +buffer.c:95: warning: pointer targets in passing argument 2 of +âevbuffer_addâ differ in signedness +rm -f libevent.a +ar cru libevent.a event.o buffer.o evbuffer.o select.o poll.o epoll.o +signal.o +ar: -u: (PROGRAM ERROR) Option should have been recognized!? +Try `ar --help' or `ar --usage' for more information. +make[4]: *** [libevent.a] Error 64 +make[4]: Leaving directory +`/root/ltp-dev/testcases/kernel/syscalls/libevent' +make[3]: *** [libevent/lib/libevent.a] Error 2 +make[3]: Leaving directory `/root/ltp-dev/testcases/kernel/syscalls' +make[2]: *** [all] Error 2 +make[2]: Leaving directory `/root/ltp-dev/testcases/kernel' +make[1]: *** [all] Error 2 +make[1]: Leaving directory `/root/ltp-dev/testcases' +make: *** [testcases-all] Error 2 +mls41:~/ltp-dev # uname -a +Linux mls41 2.6.32.8-0.3-default #1 SMP 2010-02-22 16:22:25 +0100 x86_64 +x86_64 x86_64 GNU/Linux +mls41:~/ltp-dev # + +So let's fix this nasty issue in a nasty way, see whether or not the problem still exists upstream, resolve there if necessary and sync the new version / change back down here. + +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/syscalls/libevent/buffer.c + +Commit: 223e12ee3f7fdb525746462747954552f0e07538 +Date: Mon, 8 Mar 2010 07:46:02 -0800 + +Fix install for cgroup_fj_testcases. +Turns out this script wasn't being installed properly, and thus its testcases were failing; fix by suffixing with .sh + +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/controllers/cgroup_fj/cgroup_fj_testcases +testcases/kernel/controllers/cgroup_fj/cgroup_fj_testcases.sh + +Commit: 49010e502a74cb6461fe9c64c90dd878c8edd398 +Date: Mon, 8 Mar 2010 07:42:52 -0800 + +Replace pushd // popd with cd calls. +Busybox doesn't have a concept of the pushd // popd builtins available in bash and tcsh, so let's convert the calls to cd. This is just something I noticed after executing this test, and I know there are other locations that need to be cleaned up like this in the tree... + +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/controllers/memcg/control/memcg_control_test.sh + +Commit: 9116567e3fd8646442f85518e6698ee0fef024a4 +Date: Sun, 7 Mar 2010 14:32:56 -0800 + +Fix nobody group check and change default uid/gid for nobody. +This was failing unnecessarily on Ubuntu because Debian uses nogroup instead of nobody for an anonymous group. + +Also change the default gid so that it's 65534, not 99. Standard copies of Unix (sans Redhat and Solaris apparently) use gid -> 65534 for nobody: + +FreeBSD: + +$ id nobody +uid=65534(nobody) gid=65534(nobody) groups=65534(nobody) + +RHEL 4.6: + +$ id nobody +uid=99(nobody) gid=99 groups=99 + +Solaris: + +% id nobody +uid=60001(nobody) gid=60001(nobody) + +Ubuntu: + +uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup) + +For grins, OSX Leopard just uses some whacky UINT32_MAX value for nobody XD... + +$ id nobody +uid=4294967294(nobody) gid=4294967294(nobody) groups=4294967294(nobody) + +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +IDcheck.sh + +Commit: 91ec53d1a811594976df4811a43113a0913da222 +Date: Sun, 7 Mar 2010 14:19:11 -0800 + +Correct setuid() logic for "nobody" uid. +The problem with the previous logic is that it was incorrectly hardcoding uid_t -> 99 for nobody, and thus on systems with nobody -> 65535, this is incorrect. Use getpwnam(3) to derive the correct value for the nobody's uid_t. + +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/syscalls/link/link06.c +testcases/kernel/syscalls/link/link07.c + +Commit: 373c91c072a7a85dfe2719dc8dee4e8cdd066d94 +Date: Sun, 7 Mar 2010 13:54:38 -0800 + +Remove unused variable $str based on closer inspection via git commit history. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/io/aio/aio02/runfstests.sh + +Commit: 50b265b120a1fad3ec6fa7a6d3522ca66017368e +Date: Sun, 7 Mar 2010 13:51:33 -0800 + +Fix style in runfstests.sh +1. Indentation was off (was using tabs and spaces ; standardize on tabs like we should). +2. Branch statements like case ... esac or if ... then ... fi were being inlined with statements on the following line, which was making things harder to read. + +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/io/aio/aio02/runfstests.sh + +Commit: 4a03d3d7f55d2b0fdbb47d036bfd2e33b7e61a3d +Date: Sun, 7 Mar 2010 13:38:20 -0800 + +Hi All, +I have observed that, while executing the io tests in LTP, the 'aio02' +test failed to get executed: + +-------------------------------------------------------------------------------------------------- +$./runtests -f io + +Running tests....... +<<<test_start>>> +tag=aio01 stime=1267980185 +cmdline="aio01" +contacts="" +analysis=exit +<<<test_output>>> +aio01 1 TPASS : Test 1: 10 writes in 0.000102 sec +aio01 2 TPASS : Test 2: 10 reads in 0.000056 sec +aio01 3 TPASS : Test 3: 10 prep,writes in 0.000070 sec +aio01 4 TPASS : Test 4: 10 prep,reads in 0.000051 sec +aio01 5 TPASS : Test 5: 10 reads and writes in 0.000108 sec +aio01 6 TPASS : Test 6: 10 read,write,verify in 0.000108 sec +<<<execution_status>>> +initiation_status="ok" +duration=0 termination_type=exited termination_id=0 corefile=no +cutime=0 cstime=0 +<<<test_end>>> +<<<test_start>>> +tag=aio02 stime=1267980185 +cmdline="runfstests.sh aio_tio" +contacts="" +analysis=exit +<<<test_output>>> +Starting the Tests +incrementing stop +Test run starting at Sun Mar 7 22:13:05 IST 2010 +Missing the test program. You must pass a test path/name for testing +usage: runfstests.sh [ -a test name ] + +example: runfstests.sh -a cases/aio_tio + +<<<execution_status>>> +initiation_status="ok" +duration=0 termination_type=exited termination_id=0 corefile=no +cutime=0 cstime=0 +<<<test_end>>> +INFO: ltp-pan reported all tests PASS +LTP Version: LTP-20100228 + +------------------------------------------------------------------------------------------------------- + +The "aio02_io_runtest.patch" makes the necessary changes in "io" file +in "runtest" directory. + +Signed-off-by: Maxin B. John <max...@gm...> +Acked-by: Garrett Cooper <gcooper@orangebox.local> + +Changed Files: + +runtest/io + +Commit: 31d0645afe4dbe63d16e9c8697bd03baea9dfd63 +Date: Sun, 7 Mar 2010 13:35:57 -0800 + +Hi All, +I have observed that, while executing the io tests in LTP, the 'aio02' +test failed to get executed: + +-------------------------------------------------------------------------------------------------- +$./runtests -f io + +Running tests....... +<<<test_start>>> +tag=aio01 stime=1267980185 +cmdline="aio01" +contacts="" +analysis=exit +<<<test_output>>> +aio01 1 TPASS : Test 1: 10 writes in 0.000102 sec +aio01 2 TPASS : Test 2: 10 reads in 0.000056 sec +aio01 3 TPASS : Test 3: 10 prep,writes in 0.000070 sec +aio01 4 TPASS : Test 4: 10 prep,reads in 0.000051 sec +aio01 5 TPASS : Test 5: 10 reads and writes in 0.000108 sec +aio01 6 TPASS : Test 6: 10 read,write,verify in 0.000108 sec +<<<execution_status>>> +initiation_status="ok" +duration=0 termination_type=exited termination_id=0 corefile=no +cutime=0 cstime=0 +<<<test_end>>> +<<<test_start>>> +tag=aio02 stime=1267980185 +cmdline="runfstests.sh aio_tio" +contacts="" +analysis=exit +<<<test_output>>> +Starting the Tests +incrementing stop +Test run starting at Sun Mar 7 22:13:05 IST 2010 +Missing the test program. You must pass a test path/name for testing +usage: runfstests.sh [ -a test name ] + +example: runfstests.sh -a cases/aio_tio + +<<<execution_status>>> +initiation_status="ok" +duration=0 termination_type=exited termination_id=0 corefile=no +cutime=0 cstime=0 +<<<test_end>>> +INFO: ltp-pan reported all tests PASS +LTP Version: LTP-20100228 + +------------------------------------------------------------------------------------------------------- + +The "aio02_io_runtest.patch" makes the necessary changes in "io" file +in "runtest" directory. + +Signed-off-by: Maxin B. John <max...@gm...> +Acked-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/io/aio/aio02/runfstests.sh + +Commit: 5f174e6c7e31f7f45717d5fc873c6ed2638753d7 +Date: Sat, 6 Mar 2010 20:03:43 -0800 + +Well obviously that test didn't trigger anything with the precommit hook -_-... +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +foo + +Commit: 44c0b0cbc597496bd2b5373a7361d37f3612a377 +Date: Sat, 6 Mar 2010 19:45:59 -0800 + +Testing.. + +Changed Files: + +foo + +Commit: f95875a852db24d449b10627dc5006a95c8a4db9 +Date: Fri, 5 Mar 2010 02:44:39 -0800 + +Remove ./ suffix in usage message and examples. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +runltp +runltplite.sh + +Commit: b3fb75df0076a12276071ff06421ee41e415d01d +Date: Fri, 5 Mar 2010 02:41:49 -0800 + +Clean up some logic. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/include/hotplug.fns +testcases/kernel/hotplug/cpu_hotplug/runtests.sh + +Commit: baf5c4c8412373f527431b55590d88066fd5afce +Date: Fri, 5 Mar 2010 02:38:56 -0800 + +... Finish off cleanup: +1. POSIXify. +2. Whitespace cleanup. +3. Convert to tst_resm(1) standard variables and reporting. +4. Prune away some complicated logic. + +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug01.sh +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug02.sh +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug03.sh +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug04.sh +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.sar.sh +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.sh +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug06.top.sh +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug07.sh + +Commit: 08941a3fa41efe7a832ac356833c2c389ab71050 +Date: Fri, 5 Mar 2010 01:37:03 -0800 + +1. POSIXify. 2. Cleanup space. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug04.sh + +Commit: 7edded454a877368665cd1d450161a4442403340 +Date: Fri, 5 Mar 2010 01:33:41 -0800 + +1. POSIXify. 2. Clean up whitespace. 3. Make more relative-path agnostic. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug03.sh + +Commit: b7306d6267231eca3b751167f9ea3651cbdd134d +Date: Fri, 5 Mar 2010 00:58:28 -0800 + +1. POSIXify. 2. Convert over to tst_resm(1), like hotplug01.sh +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug02.sh + +Commit: 37ef4019e587c57ea70b0eb3e4c55eb5aa863455 +Date: Fri, 5 Mar 2010 00:51:18 -0800 + +1. POSIXify 2. Clean up test. 3. Make more path agnostic. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug01.sh + +Commit: a2d684889450c2cb5cea6ea6adae0a5ce3efad9d +Date: Fri, 5 Mar 2010 00:09:35 -0800 + +Update TODO with some items that need to be rewritten. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +TODO + +Commit: 039e4bbd522168a5145d236faa4e13f402037390 +Date: Thu, 4 Mar 2010 19:01:36 +0530 + +Merge branches 'master' and 'next' into next + +Changed Files: + +Commit: c0e37ca6731cada152573522d48d08513029e44a +Date: Thu, 4 Mar 2010 00:22:27 -0800 + +1. Add default kernel source dir as /usr/src/linux. 2. Clean up indentation. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/tools/do_kcompile_loop + +Commit: a3bd68ba8e3e22f906d2bdb10c7e3f1b1c99d743 +Date: Thu, 4 Mar 2010 00:20:46 -0800 + +Fix indentation. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/tools/do_spin_loop + +Commit: ca0d5a5723863c8197fffa42aab5598cd22e4259 +Date: Thu, 4 Mar 2010 00:20:13 -0800 + +POSIXify. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/tools/do_disk_write_loop + +Commit: 48ae82cefc1e4b19834b5d52ad42937303a18f92 +Date: Thu, 4 Mar 2010 00:01:27 -0800 + +All for parameterized $TMP. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/include/testsuite.fns + +Commit: b1b5563970f07e8130130c607855a4f96b41f701 +Date: Wed, 3 Mar 2010 23:54:22 -0800 + +Remove bashisms. Clean up. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/functional/hotplug04.sh + +Commit: 099b86b8c8cf67026eb0d07ef55805ec1cc4623f +Date: Wed, 3 Mar 2010 22:59:00 -0800 + +Install in testcases/bin/cpu_hotplug to avoid collision with installed filenames. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/cpu_hotplug/Makefile + +Commit: 354afd2f792ab051e60febf9314d93aca0d67b71 +Date: Wed, 3 Mar 2010 22:57:24 -0800 + +Make sure this can run wherever -- update the install path in the runtest file for cpu_hotplug... +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +runtest/cpuhotplug + +Commit: 84e0adcdb4f5be00a51d77fadf210355416f8544 +Date: Wed, 3 Mar 2010 22:53:26 -0800 + +Make alphabetical ordering more apparent by adding a comment. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/Makefile + +Commit: fed24575bdd713d89125830c97c2a865b2e5e92f +Date: Wed, 3 Mar 2010 22:52:12 -0800 + +Fix order by properly alphabetizing it again. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/Makefile + +Commit: 87dadac27add4059d351c131a9eb138e9c5ca9da +Date: Wed, 3 Mar 2010 22:48:13 -0800 + +Remove unnecessary variable set; all MAKE_TARGETS get added to INSTALL_TARGETS. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +testcases/kernel/hotplug/memory_hotplug/Makefile + +Commit: 909edbcfc9074fd44a1f3dcb980362c0b63df5ac +Date: Thu, 4 Mar 2010 11:52:21 +0530 + +(cpu_hotplugin_makefile.patch) to execute cpuhotplugin test. I have observed that the 'hotplug' directory is not included in "testcases/kernel/Makefile". I have also created a Makefile in 'hotplug/cpu_hotplug' directory. +After applying this patch, I have followed the usual ./configure; +make; sudo make install steps and executed +the cpuhotplug test and observed the below given output . It seems +like the test execution is "not so good" in +my machine. Your mileage may vary. + +Signed-off-by: Maxin B. John <max...@gm...> +Reviewed-By: Rishikesh K Rajak<ris...@li...> + + Please enter the commit message for your changes. Lines starting + +Changed Files: + +testcases/kernel/Makefile +testcases/kernel/hotplug/cpu_hotplug/Makefile +testcases/kernel/hotplug/memory_hotplug/Makefile + +Commit: d822fce8b5b1c353cc879070774875984cd44b2c +Date: Wed, 3 Mar 2010 22:29:54 +0530 + +Merge branch 'next' of ssh://ltp.git.sourceforge.net/gitroot/ltp/ltp-dev + +Changed Files: + +Commit: ea7f641bc4389d7b93c329461533fe69e5263e45 +Date: Wed, 3 Mar 2010 05:53:02 -0800 + +Update ChangeLog. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +ChangeLog + +Commit: 3d6a7101e8e8fad797cb5dd79c77f7ac233b90e6 +Date: Wed, 3 Mar 2010 05:52:31 -0800 + +Remove overly complicated git log ChangeLog script. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +scripts/gitlog2changelog.py + +Commit: 4a930519a3c63d83bf5c24828bddfacde78279c7 +Date: Wed, 3 Mar 2010 05:51:33 -0800 + +Add a simpler git ChangeLog script. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +scripts/git2changelog.sh + +Commit: 29f9058ae39c9f51a4c6c8d5008947394382929c +Date: Wed, 3 Mar 2010 04:49:50 -0800 + +Grab ChangeLog script from http://github.com/cryos/avogadro/raw/master/scripts/gitlog2changelog.py . +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +scripts/gitlog2changelog.py + +Commit: 4b3a324a31b57ce86b2354e62a3e847126a3d6cd +Date: Wed, 3 Mar 2010 04:42:42 -0800 + +Note caveat about cpu_hotplug test needing to be run from the source tree directory. +Signed-off-by: Garrett Cooper <yan...@gm...> + +Changed Files: + +TODO + +Commit: b60acfe85c751a8996df7e9648e031a16b27fe15 +Date: Wed, 3 Mar 2010 04:26:16 -0800 + +Inspite of memcg kernel support being available, memcg_[functional|regression |stress] test script fails to execute with message +"Either Kernel does not support for memory resource controller or feature not enabled" +"Skipping all memcgroup testcases...." + +Fix the scripts to use proper if []; then .. fi statements. + +Signed-off-by : Sachin Sant <sa...@in...> + +Changed Files: + +testcases/kernel/controllers/memcg/functional/memcg_function_test.sh +testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh +testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh + +Commit: ca619b228f727108c38641f56b49833abc98508d +Date: Wed, 3 Mar 2010 15:05:23 +0530 + +Revertin the commit d40fd32af0d0ad7713b0cf6cd23daf1ee639d479 for now. +Will apply freshly once Naresh will provide new patch. + +Thanks +Rishi + +Changed Files: + +testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c + +Commit: d40fd32af0d0ad7713b0cf6cd23daf1ee639d479 +Date: Wed, 3 Mar 2010 12:31:25 +0530 + +I have found abnormal behavior of sem_post/8-1.c test case under posix. This test case passes in some times and failed in many times :-( +After my investigation found synchronization is missing between the +child processes. +Made a patch to fix this issue. + +Patch includes +1. Â Â Â Reverting back changes made by mreed on Sep 25 2006. Making sure +child has been waiting for the lock (below Refs). +2. Â Â Â using sleep in while loop is not a good idea, so sleep is removed +from while loop +3. Â Â Â For the synchronization I have added sleep before releasing the lock. + +After applying this patch I have tested this test case 1000 times continuously. +All the times test case reported as Test Pass :-) + +Signed-off-by: Naresh Kamboju < nar...@gm... > + +Changed Files: + +testcases/open_posix_testsuite/conformance/interfaces/sem_post/8-1.c + +Commit: 08c16de673d332bb8ab2827818dbab1468a2eefe +Date: Wed, 3 Mar 2010 10:17:22 +0530 + +I have observed that the 'createfile.c' in testcases/network/tcp_cmds/echo directory is not getting compiled and installed during the LTP build. The "echo_createfile.patch" makes the necessary changes in the Makefile. +Signed-off-by: Maxin B. John <max...@gm...> + +Changed Files: + +testcases/network/tcp_cmds/echo/Makefile + +Commit: 88a1dde39cc27bd9db20297c640376ef413a8aad +Date: Wed, 3 Mar 2010 09:55:54 +0530 + +Merge branches 'master' and 'next' into next + +Changed Files: + +Commit: c65443529ee1ab84f98777cdd4827066f4a69c96 +Date: Tue, 2 Mar 2010 21:46:29 +0530 + +Inspite of memcg kernel support being available, memcg_[functional|regression |stress] test script fails to execute with message +"Either Kernel does not support for memory resource controller or feature not enabled" +"Skipping all memcgroup testcases...." + +Fix the scripts to use proper if []; then .. fi statements. + +Signed-off-by : Sachin Sant <sa...@in...> +Acked-By & Tested-By: Rishikesh K Rajak <ris...@li...> + +Thanks +Rishi + +Changed Files: + +testcases/kernel/controllers/memcg/functional/memcg_function_test.sh +testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh +testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh + +Commit: c288167e111d34d5146dbbe5ebb19c84153ee67b +Date: Mon, 1 Mar 2010 20:32:24 +0530 + +Fixed the typo in changelog + +Changed Files: + +ChangeLog + +Commit: 45bfc17b467610d6fcda439c1c48916ed3370ddc +Date: Mon, 1 Mar 2010 20:08:58 +0530 + +Merge ssh://ltp.git.sourceforge.net/gitroot/ltp/ltp-dev + +Changed Files: + +Commit: 4847120ca53436585fc86aba403628ae0fde8c92 +Date: Mon, 1 Mar 2010 20:04:44 +0530 + +Changes since 6thFeb to 28Feb 2010. + +Changed Files: + +ChangeLog + +Commit: c0b8157365beb18a627fe197be6ab111e8281e86 +Date: Mon, 1 Mar 2010 14:21:09 +0530 + +New testcase added by Naufal. +These are the testcases I plan to implement (taken from +http://workouts.foss.in/2009/index.php/Hacking_Linux_Kernel_Through_testing) + +1. Validate the upper limit imposed by the topmost hierarchy. + +2. Test the testcase no 1 for subgroups far below in hierarchy. + +3. A group has n siblings. They start consuming memory and the total +increases to more than parent's limit. Check if the group with max memory +consumption gets it's task killed. + +4. Write a test which uses lots of memory, reaches swap limits and ensure it +gets killed. + +5. A task is running in a group which has a limit N on memory.limit_in_bytes +but no limit on memory.memsw.limit_in_bytes. The system has swap memory in +use and the task's memory consumption is >> N. Therefore the task should be +using a big amount of swap memory(say M) > N. Try to set the +memory.memsw.limit_in_bytes to a low value say N. It should fail to change +the limits. + +6. In test no 5 instead of changing the mem+swap limits turn the swap off. +Since the memory usage of the task is more than the current limits the task +should be killed. + +The first testcase has been attached. Reimplemented using named pipes. + +Naufal + +Signed-off-by Mohamed Naufal Basheer <nau...@gm...> + +Changed Files: + +runtest/controllers +testcases/kernel/controllers/memcg/README +testcases/kernel/controllers/memcg/control/Makefile +testcases/kernel/controllers/memcg/control/mem_process.c +testcases/kernel/controllers/memcg/control/memcg_control_test.sh + +Commit: e180e61b301cf49c9c7357706ecbcd57c99991a4 +Date: Mon, 1 Mar 2010 11:34:29 +0530 + +Reverting the commit id: 3bc8ecdb69b29436e2987173ffdd7244d8897942 + +Changed Files: + +runtest/controllers +testcases/kernel/controllers/memcg/README Commit: 4847120ca53436585fc86aba403628ae0fde8c92 Date: Mon, 1 Mar 2010 20:04:44 +0530 @@ -8,6 +1248,7 @@ Changes since 6thFeb to 28Feb 2010. Changed Files: ChangeLog +LTP-20100228 Commit: ede8524bff2068c78f1a1f8b8fe87b263a45a31a Date: Sat, 27 Feb 2010 12:12:19 -0800 hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-04-01 04:55:20
|
The branch, master, has been updated via aca4428b38701e46e0da38fd7583028216c32c66 (commit) from d2a9b9d3e04807fb4744dc7e778fe6e0c9543bc1 (commit) - Log ----------------------------------------------------------------- commit aca4428b38701e46e0da38fd7583028216c32c66 Author: Rishikesh K Rajak <ris...@li...> Date: Thu Apr 1 10:24:25 2010 +0530 Added Maintainer Notes new file Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: doc/MaintNotes | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 107 insertions(+), 0 deletions(-) create mode 100644 doc/MaintNotes diff --git a/doc/MaintNotes b/doc/MaintNotes new file mode 100644 index 0000000..d89eba6 --- /dev/null +++ b/doc/MaintNotes @@ -0,0 +1,107 @@ +Welcome to ltp community. + +We are in process of changing our sf.net host repository to +GIT from CVS.[ Any input/discussion on this is highly appreciable ]. If +possible this month end release may get delayed based on responses from +list or next month end (i.e: March ) release will be based on git tree. + +I usually try to read all patches posted to ltp mailing list, and follow +almost all discussions on list, unless the topic is about an obscure +corner that i do not personally use. But i am obviously not perfect.If +you sent a patch that you did not hear from anybody for three days, +that is a very good indication that it was dropped on the floor --- please +do not hesitate to remind me. + +The list archive is available at: + +http://marc.info/?l=ltp-list&r=1&w=2 + + +Please use this public site to point out messages in mailing list if you +want to remind someone or again start same thread without altering +subject line. + +Now coming to git transformation this month, you can find gitweb +interface at : + +http://ltp.git.sourceforge.net/git/gitweb.cgi?p=ltp/ltp-dev.git;a=summary + +There are four branches in ltp-dev.git repository that track the source tree +of ltp: "master", "maint", "next", "pu". I may add more maintanance +branch if we have huge backward of incompatible feature updates in the +future to keep an older release alive. + +The master branch is meant to contain what are very well tested and +ready to be used in production environment. There could occassionaly be +minor breakage but they are not expected to be anything major, and more +importantly those will be quickly and trivially fixable. + +So if some hotfixes has gone with this branch, you can find one more +digit has been added to version release (e.g: YYYYMMDD.1 ), So it means +it is more stable than YYYYMMDD release. I may be changing this format +if i can see a better format or if you have some suggestion then it is +most welcome. + +The "maint" branch is called one step before master branch, which will +contain all features or patches that are going to following month end +release. +(e.g: If this month end ltp-full-YYYYMMDD is going be to released +then all the stable patches you can find in this branch through out the +month, and one important point for this branch is all the patches which +has gone to this branch will be well tested and make sure that there is +no regression or breakage and Acked/Reviewed by Someone from mailing +list.) + +"next" branch will contain all the patches which has been sent on +ltp-mailing list after getting "Acked-By" and/or "Reviewed-By" anyone +from list. This branch is quite unstable but user can find their +immediate patches over here to see the stability.You can find most +unstable about this branch w.r.t feature wise or may be sometime build wise. + + +NOTE: +===== +So i always encourage testcase developer/ltp-list member to send me the +patches against this branch. And it will be closely reviewed and +acknowledged by any member from ltp-list community members. Once it gets +Acked/Reveiwed-By then it will promoted to maint branch for maintainer +testing and checking for stability, otherwise it will go to "pu" branch +for further discussion and decision. These pending patch can be worked +on following month and once it is mature enough to meet the stability +then it can be directly jump to maint branch, here i may ask the +submitter to submit the patch once again against maint branch. + +"pu" branch is basically "proposed update" branch which will contain all +the remainder of above branches. By the above definition of how "next" +works, you can tell that this branch will contain quite experimental and +obviosuly broken stuff. + +I would like to thanks everybody who helped me to release ltp-dev git into +current shape. Especially i would like to thank following: + - git.git from where actually i picked up this branch + identification. + - Garret, who has worked with me step by step to release this git + tree implementation to ltp-list@. + - All my team member from IBM who basically gave encourageable + input and specially Aneesh, Subrata, Iranna & kamalesh. + - And finally to Linux kernel, who motivated me to maintain such a + testsuits with git. + + +Usage: + +#git clone git://ltp.git.sourceforge.net/gitroot/ltp/ltp-dev.git ltp-dev +(Make sure you have the latest autoconf/automake before running make +autotools ) +#make autotools +#./configure +#make +#make install +#cd /opt/ltp +#./runltp + +Please do not hesitate to reply this mail if you have any query in your +mind, it may help me to generate a good FAQ :) . + +Happy Testing!!! + hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-04-01 05:58:05
|
The branch, next, has been updated via f50539e0bcb0f9bab88101ce40a8e09a1d76d4a9 (commit) from 4ccf10848def0a6f48e0fa1302056101564fedb0 (commit) - Log ----------------------------------------------------------------- commit f50539e0bcb0f9bab88101ce40a8e09a1d76d4a9 Author: Rishikesh K Rajak <ris...@li...> Date: Thu Apr 1 11:25:49 2010 +0530 Modified nets/Makefile for appending one file which needs in /opt/ltp/tetscases/bin directory while install. ======================================================================================= parentns.sh 0 TINFO : Pinging ChildNS from ParentNS sshd re-exec requires execution with an absolute path /opt/ltp/testcases/bin/ch_ftp.sh: line 37: ./container_ftp.pl: No such file or directory childns.sh 1 TFAIL : ftp failed Error while running the script two_children_ns: return code is 1 ; par_chld_ftp: FAIL 1 ; ======================================================================================= After patch applied the resule is like this: ======================================================================================= parentns.sh 0 TINFO : Pinging ChildNS from ParentNS sshd re-exec requires execution with an absolute path Error: Can't ftp to 192.168.0.181: Connection refused childns.sh 1 TFAIL : ftp failed Error while running the script two_children_ns: return code is 1 ; par_chld_ftp: FAIL 1 ; ======================================================================================= Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: testcases/kernel/containers/netns/Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/testcases/kernel/containers/netns/Makefile b/testcases/kernel/containers/netns/Makefile index 1466d97..1a05348 100644 --- a/testcases/kernel/containers/netns/Makefile +++ b/testcases/kernel/containers/netns/Makefile @@ -24,7 +24,7 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/testcases.mk include $(abs_srcdir)/../Makefile.inc -INSTALL_TARGETS := *.sh +INSTALL_TARGETS := *.sh container_ftp.pl MAKE_TARGETS := create_container crtchild crtchild_delchild \ par_chld_ftp par_chld_ipv6 sysfsview two_children_ns hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-04-01 06:01:17
|
The branch, master, has been updated via 44fba94453ca4f446cde4db08b0a760862b55cfa (commit) via f50539e0bcb0f9bab88101ce40a8e09a1d76d4a9 (commit) via 4ccf10848def0a6f48e0fa1302056101564fedb0 (commit) from aca4428b38701e46e0da38fd7583028216c32c66 (commit) - Log ----------------------------------------------------------------- commit 44fba94453ca4f446cde4db08b0a760862b55cfa Merge: aca4428b38701e46e0da38fd7583028216c32c66 f50539e0bcb0f9bab88101ce40a8e09a1d76d4a9 Author: Rishikesh K Rajak <ris...@li...> Date: Thu Apr 1 11:30:52 2010 +0530 Merge branches 'next' and 'master' ----------------------------------------------------------------------- Summary of changes: testcases/kernel/containers/netns/Makefile | 2 +- testcases/kernel/containers/netns/common.c | 4 ++-- testcases/kernel/containers/netns/par_chld_ipv6.c | 6 ++---- testcases/kernel/containers/netns/sysfsview.c | 2 +- .../kernel/containers/netns/two_children_ns.c | 8 ++++---- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/testcases/kernel/containers/netns/Makefile b/testcases/kernel/containers/netns/Makefile index 1466d97..1a05348 100644 --- a/testcases/kernel/containers/netns/Makefile +++ b/testcases/kernel/containers/netns/Makefile @@ -24,7 +24,7 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/testcases.mk include $(abs_srcdir)/../Makefile.inc -INSTALL_TARGETS := *.sh +INSTALL_TARGETS := *.sh container_ftp.pl MAKE_TARGETS := create_container crtchild crtchild_delchild \ par_chld_ftp par_chld_ipv6 sysfsview two_children_ns diff --git a/testcases/kernel/containers/netns/common.c b/testcases/kernel/containers/netns/common.c index 24d9554..22d0e99 100644 --- a/testcases/kernel/containers/netns/common.c +++ b/testcases/kernel/containers/netns/common.c @@ -92,7 +92,7 @@ int create_net_namespace(char *p1, char *c1) } /* We need to pass the child pid to the parentns.sh script */ - sprintf(par, "parentns.sh '%s' %s %" PRId32 , ltproot, p1, pid); + sprintf(par, "%s/testcases/bin/parentns.sh %s %" PRId32 , ltproot, p1, pid); ret = system(par); status = WEXITSTATUS(ret); @@ -141,7 +141,7 @@ int child_fn(void *c1) exit(1); } - sprintf(child, "childns.sh '%s'", ltproot); + sprintf(child, "%s/testcases/bin/childns.sh", ltproot); /* Unshare the network namespace in the child */ #if HAVE_UNSHARE diff --git a/testcases/kernel/containers/netns/par_chld_ipv6.c b/testcases/kernel/containers/netns/par_chld_ipv6.c index b869352..224063d 100644 --- a/testcases/kernel/containers/netns/par_chld_ipv6.c +++ b/testcases/kernel/containers/netns/par_chld_ipv6.c @@ -74,10 +74,8 @@ int main() tst_resm(TFAIL, "error while allocating mem"); exit(1); } - sprintf(par, "%s/testcases/kernel/containers/netns/paripv6.sh" , \ -ltproot); - sprintf(child, "%s/testcases/kernel/containers/netns/childipv6.sh" , \ -ltproot); + sprintf(par, "%s/testcases/bin/paripv6.sh", ltproot); + sprintf(child, "%s/testcases/bin/childipv6.sh", ltproot); if ((pid = fork()) == 0) { diff --git a/testcases/kernel/containers/netns/sysfsview.c b/testcases/kernel/containers/netns/sysfsview.c index a786373..a8c8fa8 100644 --- a/testcases/kernel/containers/netns/sysfsview.c +++ b/testcases/kernel/containers/netns/sysfsview.c @@ -56,7 +56,7 @@ int main() exit(1); } - sprintf(script, "%s/testcases/kernel/containers/netns/parent_share.sh" , ltproot); + sprintf(script, "%s/testcases/bin/parent_share.sh" , ltproot); /* Parent should be able to view child sysfs and vice versa */ ret = system(script); diff --git a/testcases/kernel/containers/netns/two_children_ns.c b/testcases/kernel/containers/netns/two_children_ns.c index 48c65f4..b14bac3 100644 --- a/testcases/kernel/containers/netns/two_children_ns.c +++ b/testcases/kernel/containers/netns/two_children_ns.c @@ -85,10 +85,10 @@ int main() exit(1); } - sprintf(child[0], "%s/testcases/kernel/containers/netns/child_1.sh" , ltproot); - sprintf(child[1], "%s/testcases/kernel/containers/netns/child_2.sh" , ltproot); - sprintf(par[0], "%s/testcases/kernel/containers/netns/parent_1.sh" , ltproot); - sprintf(par[1], "%s/testcases/kernel/containers/netns/parent_2.sh" , ltproot); + sprintf(child[0], "%s/testcases/bin/child_1.sh" , ltproot); + sprintf(child[1], "%s/testcases/bin/child_2.sh" , ltproot); + sprintf(par[0], "%s/testcases/bin/parent_1.sh" , ltproot); + sprintf(par[1], "%s/testcases/bin/parent_2.sh" , ltproot); /* Loop for creating two child Network Namespaces */ for(i=0;i<2;i++) { hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-04-01 07:14:31
|
The branch, next, has been updated via aabf191024aacc91784593b0d3f8d5fa37434b25 (commit) from f50539e0bcb0f9bab88101ce40a8e09a1d76d4a9 (commit) - Log ----------------------------------------------------------------- commit aabf191024aacc91784593b0d3f8d5fa37434b25 Author: Rishikesh K Rajak <ris...@li...> Date: Thu Apr 1 12:43:27 2010 +0530 Added a new file called result where maintainer need to provide the result on which he has run before releasing the tar ball for month end release. Signed-off-by: Rishikesh K Rajak <ris...@li...> ----------------------------------------------------------------------- Summary of changes: result | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 96 insertions(+), 0 deletions(-) create mode 100644 result diff --git a/result b/result new file mode 100644 index 0000000..78db428 --- /dev/null +++ b/result @@ -0,0 +1,96 @@ +This file contains for corresponding monthly release results. it will alwats help to refer this file and come to know about known failures. + + +ltp-full-20100331 Result pon various Arch: + +On x86_64 machine with RHEL5.4(2.6.18-164.el5): +***************************************************** + +Result Log file: +=============== +eventfd01 FAIL 4 +syslog07 FAIL 1 +syslog08 FAIL 1 +mtest06 FAIL 255 +su01 FAIL 1 +hugemmap04 FAIL 2 +hugeshmat01 FAIL 6 +hugeshmat02 FAIL 6 +hugeshmat03 FAIL 2 +hugeshmctl01 FAIL 6 +hugeshmctl02 FAIL 6 +hugeshmctl03 FAIL 2 +hugeshmdt01 FAIL 6 +hugeshmget01 FAIL 2 +hugeshmget02 FAIL 6 +hugeshmget03 FAIL 6 +hugeshmget05 FAIL 2 +mail FAIL 2 + + +Result Output file: +================== +syslog07 1 TFAIL : Higher level messages are not logged. +check_netns_enabled 1 TFAIL : unshare syscall smoke test failed: errno=EINVAL(22): Invalid argument +mail_tests::mail02 2 TFAIL : Test #2: Mailer-Deamon failed to report delivery failure. Reason: +mail_tests::mail05 5 TFAIL : Test #5: mail failed to carbon copy user mail_test. Reason: + + +On ppc64 machine with RHEL5.4(2.6.18-164.el5): +***************************************************** + +Result Log file: +=============== +cct01 FAIL 1 +eventfd01 FAIL 4 +fdatasync02 FAIL 1 +syslog07 FAIL 1 +syslog08 FAIL 1 +mtest06 FAIL 255 +mmapstress03 FAIL 1 +su01 FAIL 1 +cron_deny01 FAIL 1 + + +Result Output file: +================== +acct01 1 TFAIL : attempting to assign acct file to device: expected failure but got okay return +fdatasync02 2 TFAIL : Unexpected results for file descriptor to a special file ; returned 0 (expected -1), errno 0 (expected 22) +syslog07 1 TFAIL : Higher level messages are not logged. +mmapstress03 1 TFAIL : Test failed +check_netns_enabled 1 TFAIL : unshare syscall smoke test failed: errno=EINVAL(22): Invalid argument + + + +On s390x machine with RHEL5.4(2.6.18-164.el5): +***************************************************** + +Result Log file: +=============== +eventfd01 FAIL 4 +keyctl01 FAIL 1 +rt_sigsuspend01 FAIL 11 +timer_getoverrun01 FAIL 1 +timer_gettime01 FAIL 1 +su01 FAIL 1 +cron_allow01 FAIL 1 + + + +Result Output file: +================== +keyctl01 2 TFAIL : KEYCTL_REVOKE got unexpected errno: errno=EINVAL(22): Invalid argument +timer_getoverrun01 1 TFAIL : Block 1: test 0 FAILED... errno = 22 : Invalid argument +timer_gettime01 1 TFAIL : Block 1: test 0 FAILED... errno = 22 : Invalid argument +check_netns_enabled 1 TFAIL : unshare syscall smoke test failed: errno=EINVAL(22): Invalid argument + + + +On x86_64 machine with SLES11GA(2.6.27.19-5-default): +***************************************************** + +Result Log file: +=============== +eventfd2_03 FAIL 1 +utimensat01 FAIL 1 +ftest04 FAIL 1 hooks/post-receive -- ltp |
From: Rishi k. K R. <ris...@li...> - 2010-04-01 07:15:30
|
The branch, master, has been updated via 4837fee8a7c2de6a83c8927a574c792ca6dabe4e (commit) via aabf191024aacc91784593b0d3f8d5fa37434b25 (commit) from 44fba94453ca4f446cde4db08b0a760862b55cfa (commit) - Log ----------------------------------------------------------------- commit 4837fee8a7c2de6a83c8927a574c792ca6dabe4e Merge: 44fba94453ca4f446cde4db08b0a760862b55cfa aabf191024aacc91784593b0d3f8d5fa37434b25 Author: Rishikesh K Rajak <ris...@li...> Date: Thu Apr 1 12:45:00 2010 +0530 Merge branches 'next' and 'master' ----------------------------------------------------------------------- Summary of changes: result | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 96 insertions(+), 0 deletions(-) create mode 100644 result diff --git a/result b/result new file mode 100644 index 0000000..78db428 --- /dev/null +++ b/result @@ -0,0 +1,96 @@ +This file contains for corresponding monthly release results. it will alwats help to refer this file and come to know about known failures. + + +ltp-full-20100331 Result pon various Arch: + +On x86_64 machine with RHEL5.4(2.6.18-164.el5): +***************************************************** + +Result Log file: +=============== +eventfd01 FAIL 4 +syslog07 FAIL 1 +syslog08 FAIL 1 +mtest06 FAIL 255 +su01 FAIL 1 +hugemmap04 FAIL 2 +hugeshmat01 FAIL 6 +hugeshmat02 FAIL 6 +hugeshmat03 FAIL 2 +hugeshmctl01 FAIL 6 +hugeshmctl02 FAIL 6 +hugeshmctl03 FAIL 2 +hugeshmdt01 FAIL 6 +hugeshmget01 FAIL 2 +hugeshmget02 FAIL 6 +hugeshmget03 FAIL 6 +hugeshmget05 FAIL 2 +mail FAIL 2 + + +Result Output file: +================== +syslog07 1 TFAIL : Higher level messages are not logged. +check_netns_enabled 1 TFAIL : unshare syscall smoke test failed: errno=EINVAL(22): Invalid argument +mail_tests::mail02 2 TFAIL : Test #2: Mailer-Deamon failed to report delivery failure. Reason: +mail_tests::mail05 5 TFAIL : Test #5: mail failed to carbon copy user mail_test. Reason: + + +On ppc64 machine with RHEL5.4(2.6.18-164.el5): +***************************************************** + +Result Log file: +=============== +cct01 FAIL 1 +eventfd01 FAIL 4 +fdatasync02 FAIL 1 +syslog07 FAIL 1 +syslog08 FAIL 1 +mtest06 FAIL 255 +mmapstress03 FAIL 1 +su01 FAIL 1 +cron_deny01 FAIL 1 + + +Result Output file: +================== +acct01 1 TFAIL : attempting to assign acct file to device: expected failure but got okay return +fdatasync02 2 TFAIL : Unexpected results for file descriptor to a special file ; returned 0 (expected -1), errno 0 (expected 22) +syslog07 1 TFAIL : Higher level messages are not logged. +mmapstress03 1 TFAIL : Test failed +check_netns_enabled 1 TFAIL : unshare syscall smoke test failed: errno=EINVAL(22): Invalid argument + + + +On s390x machine with RHEL5.4(2.6.18-164.el5): +***************************************************** + +Result Log file: +=============== +eventfd01 FAIL 4 +keyctl01 FAIL 1 +rt_sigsuspend01 FAIL 11 +timer_getoverrun01 FAIL 1 +timer_gettime01 FAIL 1 +su01 FAIL 1 +cron_allow01 FAIL 1 + + + +Result Output file: +================== +keyctl01 2 TFAIL : KEYCTL_REVOKE got unexpected errno: errno=EINVAL(22): Invalid argument +timer_getoverrun01 1 TFAIL : Block 1: test 0 FAILED... errno = 22 : Invalid argument +timer_gettime01 1 TFAIL : Block 1: test 0 FAILED... errno = 22 : Invalid argument +check_netns_enabled 1 TFAIL : unshare syscall smoke test failed: errno=EINVAL(22): Invalid argument + + + +On x86_64 machine with SLES11GA(2.6.27.19-5-default): +***************************************************** + +Result Log file: +=============== +eventfd2_03 FAIL 1 +utimensat01 FAIL 1 +ftest04 FAIL 1 hooks/post-receive -- ltp |
From: Garrett C. <ris...@li...> - 2010-04-07 10:06:38
|
The branch, pu, has been updated via 1d67dc1564c73d49fc681679e4a5b9be48420e48 (commit) from 3bf514769d060a64d0f38f4b97c00d8bb0de74f8 (commit) - Log ----------------------------------------------------------------- commit 1d67dc1564c73d49fc681679e4a5b9be48420e48 Author: Garrett Cooper <yan...@gm...> Date: Wed Apr 7 02:50:32 2010 -0700 Add proper checks for Linux and the BSDs. Signed-off-by: Garrett Cooper <yan...@gm...> ----------------------------------------------------------------------- Summary of changes: .../conformance/interfaces/sched_yield/1-1.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sched_yield/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sched_yield/1-1.c index 7437e0a..f0e1cb5 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sched_yield/1-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sched_yield/1-1.c @@ -19,9 +19,8 @@ * 4. Launch a thread which call sched_yield() and check that the counter has * changed since the call. */ -#define LINUX -#ifdef LINUX +#ifdef __linux__ #define _GNU_SOURCE #endif @@ -35,7 +34,8 @@ #include <sys/wait.h> #include "posixtest.h" -#ifdef BSD +#ifdef __FreeBSD__ || __NetBSD__ || __OpenBSD__ +#define BSD # include <sys/types.h> # include <sys/param.h> # include <sys/sysctl.h> @@ -78,7 +78,7 @@ int get_ncpu() { return ncpu; } -#ifdef LINUX +#ifdef __linux__ int set_process_affinity(int cpu) { int retval = -1; @@ -131,7 +131,7 @@ int set_thread_affinity(int cpu) void * runner(void * arg) { int i=0, nc; long result = 0; -#ifdef LINUX +#ifdef __linux__ set_thread_affinity(*(int *)arg); fprintf(stderr, "%ld bind to cpu: %d\n", pthread_self(), *(int*)arg); #endif @@ -154,7 +154,7 @@ void * runner(void * arg) { } void * busy_thread(void *arg){ -#ifdef LINUX +#ifdef __linux__ set_thread_affinity(*(int *)arg); fprintf(stderr, "%ld bind to cpu: %d\n", pthread_self(), *(int*)arg); #endif @@ -170,7 +170,7 @@ void * busy_thread(void *arg){ void buzy_process(int cpu){ struct sched_param param; -#ifdef LINUX +#ifdef __linux__ /* Bind to a processor */ set_process_affinity(cpu); fprintf(stderr, "%d bind to cpu: %d\n", getpid(), cpu); hooks/post-receive -- ltp |
From: Garrett C. <ris...@li...> - 2010-04-07 10:10:31
|
The branch, pu, has been updated via 001227f859f24bde222d0813d9327afe4c132a33 (commit) from 1d67dc1564c73d49fc681679e4a5b9be48420e48 (commit) - Log ----------------------------------------------------------------- commit 001227f859f24bde222d0813d9327afe4c132a33 Author: Garrett Cooper <yan...@gm...> Date: Wed Apr 7 03:08:43 2010 -0700 Fix a rookie typo with #ifdef vs #if defined() Ok, I'm tired... need to stop making such rookie mistakes with #ifdef :P. Signed-off-by: Garrett Cooper <yan...@gm...> ----------------------------------------------------------------------- Summary of changes: .../conformance/interfaces/sched_yield/1-1.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sched_yield/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sched_yield/1-1.c index f0e1cb5..e9e54f4 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sched_yield/1-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sched_yield/1-1.c @@ -34,7 +34,7 @@ #include <sys/wait.h> #include "posixtest.h" -#ifdef __FreeBSD__ || __NetBSD__ || __OpenBSD__ +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) #define BSD # include <sys/types.h> # include <sys/param.h> hooks/post-receive -- ltp |
From: Garrett C. <ris...@li...> - 2010-04-08 04:39:30
|
The branch, pu, has been updated via e90e0138cb7444d5db967183397b776979efd593 (commit) from 001227f859f24bde222d0813d9327afe4c132a33 (commit) - Log ----------------------------------------------------------------- commit e90e0138cb7444d5db967183397b776979efd593 Author: Garrett Cooper <yan...@gm...> Date: Wed Apr 7 21:37:13 2010 -0700 Fix a typo and add a missing definition for non-Linux platforms. aio.h appears to either define or pull in other headers that define NULL. This isn't true on FreeBSD. Signed-off-by: Garrett Cooper <yan...@gm...> ----------------------------------------------------------------------- Summary of changes: .../conformance/definitions/aio_h/2-1.c | 1 + .../conformance/definitions/errno_h/3-1.c | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/testcases/open_posix_testsuite/conformance/definitions/aio_h/2-1.c b/testcases/open_posix_testsuite/conformance/definitions/aio_h/2-1.c index ef0f2c5..7ae8001 100644 --- a/testcases/open_posix_testsuite/conformance/definitions/aio_h/2-1.c +++ b/testcases/open_posix_testsuite/conformance/definitions/aio_h/2-1.c @@ -9,6 +9,7 @@ /* test if aio.h exists and can be included */ #include <aio.h> +#include <stdlib.h> /* For NULL on non-linux platforms. */ int main(void) { diff --git a/testcases/open_posix_testsuite/conformance/definitions/errno_h/3-1.c b/testcases/open_posix_testsuite/conformance/definitions/errno_h/3-1.c index 40c8cb3..ed1c519 100644 --- a/testcases/open_posix_testsuite/conformance/definitions/errno_h/3-1.c +++ b/testcases/open_posix_testsuite/conformance/definitions/errno_h/3-1.c @@ -1,5 +1,5 @@ /* - *Following symbles need to be defined in errno.h + *Following symbols need to be defined in errno.h *author:ys...@ln... */ hooks/post-receive -- ltp |