* [LTP] [PATCH] Probe an bigger linear available address to attachment.
@ 2010-08-31 10:33 yangzi
2010-08-31 10:36 ` Yang, Wei
0 siblings, 1 reply; 5+ messages in thread
From: yangzi @ 2010-08-31 10:33 UTC (permalink / raw)
To: ltp-list
[-- Attachment #1: Type: text/plain, Size: 673 bytes --]
Hi
When running shmat01 on some platforms, it fails on
"addr = shmat(*(tc.shmid), base_addr + tc.offset,tc.flags);"
with a INVAL error. Look at codes in "setup()", it probes
an available address and align the address to SHMLBA. After
alignment, the new address is no guarantee to be available
any more. Here a bigger size is used to probe so that it's
still valid address after alignment.Pertaining to the function
setup_tc(lc, &tc) ,when it outside of "for (i = 0; i < TST_TOTAL;
i++)",and printf the tc.offset value is always 0,add correct a mistake
of original codes to move "setup_tc()" to right place.
Signed-off-by: Yang Wei <wei.yang@windriver.com>
wei yang
BR
[-- Attachment #2: 0001-Probe-an-bigger-linear-available-address-to-attachme.patch --]
[-- Type: text/x-patch, Size: 2374 bytes --]
From 22b24a3d16a751f6512a7691abc46f9d744c091a Mon Sep 17 00:00:00 2001
From: Yang Wei <wyang@windriver.com>
Date: Tue, 31 Aug 2010 18:02:16 +0800
Subject: [PATCH] Probe an bigger linear available address to attachment.
When running shmat01 on some platforms, it fails on
"addr = shmat(*(tc.shmid), base_addr + tc.offset,tc.flags);"
with a EINVAL error. Look at codes in "setup()", it probes
an available address and align the address to SHMLBA. After
alignment, the new address is no guarantee to be available
any more. Here a bigger size is used to probe so that it's
still valid address after alignment.And correct a mistake
of original codes to move "setup_tc()" to right place.
Signed-off-by: Yang Wei <wei.yang@windriver.com>
---
testcases/kernel/syscalls/ipc/shmat/shmat01.c | 15 ++++++++++++---
1 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/testcases/kernel/syscalls/ipc/shmat/shmat01.c b/testcases/kernel/syscalls/ipc/shmat/shmat01.c
index 4cb5eaf..ec6ae89 100644
--- a/testcases/kernel/syscalls/ipc/shmat/shmat01.c
+++ b/testcases/kernel/syscalls/ipc/shmat/shmat01.c
@@ -120,11 +120,12 @@ int main(int ac, char **av)
/* reset Tst_count in case we are looping */
Tst_count = 0;
- /* setup test case paremeters */
- setup_tc(lc, &tc);
/* loop through the test cases */
for (i = 0; i < TST_TOTAL; i++) {
+
+ /* setup test case paremeters */
+ setup_tc(i, &tc);
/*
* Use TEST macro to make the call
@@ -246,6 +247,8 @@ void check_functionality(int i)
*/
void setup(void)
{
+ int shm_id_2;
+
/* capture signals */
tst_sig(NOFORK, DEF_HANDLER, cleanup);
@@ -270,12 +273,18 @@ void setup(void)
}
/* Probe an available linear address for attachment */
- if ((base_addr = shmat(shm_id_1, NULL, 0)) == (void *)-1) {
+ if ((shm_id_2 = shmget(shmkey++, SHMLBA + INT_SIZE, SHM_RW | IPC_CREAT |
+ IPC_EXCL)) == -1) {
+ tst_brkm(TBROK, cleanup, "Failed to create shared memory "
+ "resource 1 in setup()");
+ }
+ if ((base_addr = shmat(shm_id_2, NULL, 0)) == (void *)-1) {
tst_brkm(TBROK, cleanup, "Couldn't attach shared memory");
}
if (shmdt((const void *)base_addr) == -1) {
tst_brkm(TBROK, cleanup, "Couldn't detach shared memory");
}
+ rm_shm(shm_id_2);
/* some architectures (e.g. parisc) are strange, so better always align to
* next SHMLBA address. */
--
1.6.0.4
[-- Attachment #3: Type: text/plain, Size: 247 bytes --]
------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:
Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
[-- Attachment #4: Type: text/plain, Size: 155 bytes --]
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply related [flat|nested] 5+ messages in thread* [LTP] [PATCH] Probe an bigger linear available address to attachment.
2010-08-31 10:33 [LTP] [PATCH] Probe an bigger linear available address to attachment yangzi
@ 2010-08-31 10:36 ` Yang, Wei
2010-09-01 6:30 ` Garrett Cooper
2010-09-06 16:16 ` Subrata Modak
0 siblings, 2 replies; 5+ messages in thread
From: Yang, Wei @ 2010-08-31 10:36 UTC (permalink / raw)
To: ltp-list
[-- Attachment #1.1: Type: text/plain, Size: 698 bytes --]
Hi
When running shmat01 on some platforms, it fails on
"addr = shmat(*(tc.shmid), base_addr + tc.offset,tc.flags);"
with a INVAL error. Look at codes in "setup()", it probes
an available address and align the address to SHMLBA. After
alignment, the new address is no guarantee to be available
any more. Here a bigger size is used to probe so that it's
still valid address after alignment.Pertaining to the function
setup_tc(lc, &tc) ,when it outside of "for (i = 0; i < TST_TOTAL;
i++)",and printf the tc.offset value is always 0,add correct a mistake
of original codes to move "setup_tc()" to right place.
Signed-off-by: Yang Wei <wei.yang@windriver.com>
wei yang
BR
[-- Attachment #1.2: Type: text/html, Size: 1241 bytes --]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Probe-an-bigger-linear-available-address-to-attachme.patch --]
[-- Type: text/x-diff; name="0001-Probe-an-bigger-linear-available-address-to-attachme.patch", Size: 2374 bytes --]
From 22b24a3d16a751f6512a7691abc46f9d744c091a Mon Sep 17 00:00:00 2001
From: Yang Wei <wyang@windriver.com>
Date: Tue, 31 Aug 2010 18:02:16 +0800
Subject: [PATCH] Probe an bigger linear available address to attachment.
When running shmat01 on some platforms, it fails on
"addr = shmat(*(tc.shmid), base_addr + tc.offset,tc.flags);"
with a EINVAL error. Look at codes in "setup()", it probes
an available address and align the address to SHMLBA. After
alignment, the new address is no guarantee to be available
any more. Here a bigger size is used to probe so that it's
still valid address after alignment.And correct a mistake
of original codes to move "setup_tc()" to right place.
Signed-off-by: Yang Wei <wei.yang@windriver.com>
---
testcases/kernel/syscalls/ipc/shmat/shmat01.c | 15 ++++++++++++---
1 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/testcases/kernel/syscalls/ipc/shmat/shmat01.c b/testcases/kernel/syscalls/ipc/shmat/shmat01.c
index 4cb5eaf..ec6ae89 100644
--- a/testcases/kernel/syscalls/ipc/shmat/shmat01.c
+++ b/testcases/kernel/syscalls/ipc/shmat/shmat01.c
@@ -120,11 +120,12 @@ int main(int ac, char **av)
/* reset Tst_count in case we are looping */
Tst_count = 0;
- /* setup test case paremeters */
- setup_tc(lc, &tc);
/* loop through the test cases */
for (i = 0; i < TST_TOTAL; i++) {
+
+ /* setup test case paremeters */
+ setup_tc(i, &tc);
/*
* Use TEST macro to make the call
@@ -246,6 +247,8 @@ void check_functionality(int i)
*/
void setup(void)
{
+ int shm_id_2;
+
/* capture signals */
tst_sig(NOFORK, DEF_HANDLER, cleanup);
@@ -270,12 +273,18 @@ void setup(void)
}
/* Probe an available linear address for attachment */
- if ((base_addr = shmat(shm_id_1, NULL, 0)) == (void *)-1) {
+ if ((shm_id_2 = shmget(shmkey++, SHMLBA + INT_SIZE, SHM_RW | IPC_CREAT |
+ IPC_EXCL)) == -1) {
+ tst_brkm(TBROK, cleanup, "Failed to create shared memory "
+ "resource 1 in setup()");
+ }
+ if ((base_addr = shmat(shm_id_2, NULL, 0)) == (void *)-1) {
tst_brkm(TBROK, cleanup, "Couldn't attach shared memory");
}
if (shmdt((const void *)base_addr) == -1) {
tst_brkm(TBROK, cleanup, "Couldn't detach shared memory");
}
+ rm_shm(shm_id_2);
/* some architectures (e.g. parisc) are strange, so better always align to
* next SHMLBA address. */
--
1.6.0.4
[-- Attachment #3: Type: text/plain, Size: 247 bytes --]
------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:
Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
[-- Attachment #4: Type: text/plain, Size: 155 bytes --]
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [LTP] [PATCH] Probe an bigger linear available address to attachment.
2010-08-31 10:36 ` Yang, Wei
@ 2010-09-01 6:30 ` Garrett Cooper
2010-09-01 7:03 ` yangzi
2010-09-06 16:16 ` Subrata Modak
1 sibling, 1 reply; 5+ messages in thread
From: Garrett Cooper @ 2010-09-01 6:30 UTC (permalink / raw)
To: Yang, Wei; +Cc: ltp-list
2010/8/31 Yang, Wei <Wei.Yang@windriver.com>:
> Hi
>
> When running shmat01 on some platforms, it fails on
> "addr = shmat(*(tc.shmid), base_addr + tc.offset,tc.flags);"
> with a INVAL error. Look at codes in "setup()", it probes
> an available address and align the address to SHMLBA. After
> alignment, the new address is no guarantee to be available
> any more. Here a bigger size is used to probe so that it's
> still valid address after alignment.Pertaining to the function
> setup_tc(lc, &tc) ,when it outside of "for (i = 0; i < TST_TOTAL;
> i++)",and printf the tc.offset value is always 0,add correct a mistake
> of original codes to move "setup_tc()" to right place.
Which of the sub-testcases fail and on which architecture(s)?
Thanks,
-Garrett
------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:
Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [LTP] [PATCH] Probe an bigger linear available address to attachment.
2010-09-01 6:30 ` Garrett Cooper
@ 2010-09-01 7:03 ` yangzi
0 siblings, 0 replies; 5+ messages in thread
From: yangzi @ 2010-09-01 7:03 UTC (permalink / raw)
To: Garrett Cooper; +Cc: ltp-list
Hi
It failed on the first sub-testcase and on the mips architecture.
Thanks
wei.yang
Garrett Cooper wrote:
> 2010/8/31 Yang, Wei <Wei.Yang@windriver.com>:
>> Hi
>>
>> When running shmat01 on some platforms, it fails on
>> "addr = shmat(*(tc.shmid), base_addr + tc.offset,tc.flags);"
>> with a INVAL error. Look at codes in "setup()", it probes
>> an available address and align the address to SHMLBA. After
>> alignment, the new address is no guarantee to be available
>> any more. Here a bigger size is used to probe so that it's
>> still valid address after alignment.Pertaining to the function
>> setup_tc(lc, &tc) ,when it outside of "for (i = 0; i < TST_TOTAL;
>> i++)",and printf the tc.offset value is always 0,add correct a mistake
>> of original codes to move "setup_tc()" to right place.
>
> Which of the sub-testcases fail and on which architecture(s)?
> Thanks,
> -Garrett
------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:
Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [LTP] [PATCH] Probe an bigger linear available address to attachment.
2010-08-31 10:36 ` Yang, Wei
2010-09-01 6:30 ` Garrett Cooper
@ 2010-09-06 16:16 ` Subrata Modak
1 sibling, 0 replies; 5+ messages in thread
From: Subrata Modak @ 2010-09-06 16:16 UTC (permalink / raw)
To: Garrett Cooper; +Cc: ltp-list, Yang, Wei
Garret, this patch ?
Regards--
Subrata
On Tue, 2010-08-31 at 12:36 +0200, Yang, Wei wrote:
> Hi
>
> When running shmat01 on some platforms, it fails on
> "addr = shmat(*(tc.shmid), base_addr + tc.offset,tc.flags);"
> with a INVAL error. Look at codes in "setup()", it probes
> an available address and align the address to SHMLBA. After
> alignment, the new address is no guarantee to be available
> any more. Here a bigger size is used to probe so that it's
> still valid address after alignment.Pertaining to the function
> setup_tc(lc, &tc) ,when it outside of "for (i = 0; i < TST_TOTAL;
> i++)",and printf the tc.offset value is always 0,add correct a mistake
> of original codes to move "setup_tc()" to right place.
>
> Signed-off-by: Yang Wei <wei.yang@windriver.com>
>
> wei yang
> BR
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> This SF.net Dev2Dev email is sponsored by:
>
> Show off your parallel programming skills.
> Enter the Intel(R) Threading Challenge 2010.
> http://p.sf.net/sfu/intel-thread-sfd
> _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list
------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:
Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-09-06 16:17 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-31 10:33 [LTP] [PATCH] Probe an bigger linear available address to attachment yangzi
2010-08-31 10:36 ` Yang, Wei
2010-09-01 6:30 ` Garrett Cooper
2010-09-01 7:03 ` yangzi
2010-09-06 16:16 ` Subrata Modak
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox