From: Jochen Roemling <jochen@roemling.net>
To: William Lee Irwin III <wli@holomorphy.com>
Cc: linux-kernel@vger.kernel.org, Chris Wright <chrisw@osdl.org>
Subject: Re: shmget with SHM_HUGETLB flag: Operation not permitted
Date: Sun, 29 Feb 2004 22:37:38 +0100 [thread overview]
Message-ID: <40425BA2.6030905@roemling.net> (raw)
In-Reply-To: <20040227021101.GV693@holomorphy.com>
[-- Attachment #1: Type: text/plain, Size: 949 bytes --]
William Lee Irwin III wrote:
>It's capable(CAP_IPC_LOCK) || in_group_p(0), not current->uid == 0.
>It will barf if you ask for more than either one of those limits. It
>will also barf if you ask for an amount not a multiple of the hugepage
>size. Please show the test program's code and strace the test program
>to determine what response it's getting.
>
>
>
I attached the test pgm. It is nearly the same as shown
in Documentation/vm/hugetlbpage.txt
If you run it as root, it allocates 1 Hugepage, if run as user, it fails.
roesrv01:~ # ./a.out
shmid: 0x220004
shmaddr: 0x40167000
Starting the writes:
....
Starting the Check...Done.
roesrv01:~ # su - jochen
jochen@roesrv01:~> ./a.out
Failure:: Operation not permitted
I guess, a strace is not necessary.
The pgm has only the main function and only one position where it says
"Failure"
What do I have to do to make this pgm run as an ordinary user with a
stock kernel?
Curious...
Jochen
[-- Attachment #2: huge.c --]
[-- Type: text/plain, Size: 1799 bytes --]
/* Example of using hugepage in user application using Sys V shared memory
* system calls. In this example, app is requesting memory of size 256MB that
* is backed by huge pages. Application uses the flag SHM_HUGETLB in shmget
* system call to informt the kernel that it is requesting hugepages. For
* IA-64 architecture, Linux kernel reserves Region number 4 for hugepages.
* That means the addresses starting with 0x800000....will need to be
* specified.
*/
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <errno.h>
extern int errno;
#define SHM_HUGETLB 04000
#define LPAGE_SIZE (4UL*1024UL*1024UL)
#define dprintf(x) printf(x)
#define ADDR (0x8000000000000000UL)
main()
{
int shmid;
int i, j, k;
volatile char *shmaddr;
if ((shmid =shmget(IPC_PRIVATE, LPAGE_SIZE, SHM_HUGETLB|IPC_CREAT|SHM_R|SHM_W )) < 0) {
perror("Failure:");
exit(1);
}
printf("shmid: 0x%x\n", shmid);
shmaddr = shmat(shmid, (void *)ADDR, SHM_RND) ;
if (errno != 0) {
perror("Shared Memory Attach Failure:");
exit(2);
}
printf("shmaddr: %p\n", shmaddr);
dprintf("Starting the writes:\n");
for (i=0;i<LPAGE_SIZE;i++) {
shmaddr[i] = (char) (i);
if (!(i%(1024*1024))) dprintf(".");
}
dprintf("\n");
dprintf("Starting the Check...");
for (i=0; i<LPAGE_SIZE;i++)
if (shmaddr[i] != (char)i)
printf("\nIndex %d mismatched.");
dprintf("Done.\n");
if (shmdt((const void *)shmaddr) != 0) {
perror("Detached Failure:");
exit (3);
}
}
next prev parent reply other threads:[~2004-02-29 21:37 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1tCuq-3AH-1@gated-at.bofh.it>
[not found] ` <1tCEo-3Lh-27@gated-at.bofh.it>
[not found] ` <1tDgT-4r2-13@gated-at.bofh.it>
2004-02-27 0:02 ` shmget with SHM_HUGETLB flag: Operation not permitted Jochen Roemling
[not found] ` <403E87CF.1080409@roemling.net>
2004-02-27 0:06 ` Chris Wright
2004-02-27 0:32 ` Chris Wright
2004-02-27 0:55 ` Jochen Roemling
2004-02-27 1:11 ` William Lee Irwin III
2004-02-27 1:33 ` Jochen Roemling
2004-02-27 2:11 ` William Lee Irwin III
2004-02-29 21:37 ` Jochen Roemling [this message]
2004-02-29 22:31 ` William Lee Irwin III
2004-02-27 16:32 ` Zlatko Calusic
2004-02-27 16:35 ` William Lee Irwin III
2004-02-27 16:42 ` Zlatko Calusic
2004-02-27 0:42 ` Wim Coekaerts
[not found] <1tDJX-4Ua-25@gated-at.bofh.it>
[not found] ` <1tDJX-4Ua-27@gated-at.bofh.it>
[not found] ` <1tDJX-4Ua-29@gated-at.bofh.it>
[not found] ` <1tDTE-51P-23@gated-at.bofh.it>
[not found] ` <1tDTE-51P-21@gated-at.bofh.it>
2004-02-27 0:35 ` Jochen Roemling
2004-02-27 0:58 ` William Lee Irwin III
2004-02-26 22:36 Jochen Roemling
2004-02-26 22:52 ` William Lee Irwin III
2004-02-26 23:27 ` Chris Wright
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=40425BA2.6030905@roemling.net \
--to=jochen@roemling.net \
--cc=chrisw@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=wli@holomorphy.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.