<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/ipc, branch v2.6.30.6</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/ipc?h=v2.6.30.6</id>
<link rel='self' href='https://git.amat.us/linux/atom/ipc?h=v2.6.30.6'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2009-09-09T03:33:20Z</updated>
<entry>
<title>mm: fix hugetlb bug due to user_shm_unlock call</title>
<updated>2009-09-09T03:33:20Z</updated>
<author>
<name>Hugh Dickins</name>
<email>hugh.dickins@tiscali.co.uk</email>
</author>
<published>2009-08-24T15:30:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=00ba05d158a04889546092400b5d76443d01f112'/>
<id>urn:sha1:00ba05d158a04889546092400b5d76443d01f112</id>
<content type='text'>
commit 353d5c30c666580347515da609dd74a2b8e9b828 upstream.

2.6.30's commit 8a0bdec194c21c8fdef840989d0d7b742bb5d4bc removed
user_shm_lock() calls in hugetlb_file_setup() but left the
user_shm_unlock call in shm_destroy().

In detail:
Assume that can_do_hugetlb_shm() returns true and hence user_shm_lock()
is not called in hugetlb_file_setup(). However, user_shm_unlock() is
called in any case in shm_destroy() and in the following
atomic_dec_and_lock(&amp;up-&gt;__count) in free_uid() is executed and if
up-&gt;__count gets zero, also cleanup_user_struct() is scheduled.

Note that sched_destroy_user() is empty if CONFIG_USER_SCHED is not set.
However, the ref counter up-&gt;__count gets unexpectedly non-positive and
the corresponding structs are freed even though there are live
references to them, resulting in a kernel oops after a lots of
shmget(SHM_HUGETLB)/shmctl(IPC_RMID) cycles and CONFIG_USER_SCHED set.

Hugh changed Stefan's suggested patch: can_do_hugetlb_shm() at the
time of shm_destroy() may give a different answer from at the time
of hugetlb_file_setup().  And fixed newseg()'s no_id error path,
which has missed user_shm_unlock() ever since it came in 2.6.9.

Reported-by: Stefan Huber &lt;shuber2@gmail.com&gt;
Signed-off-by: Hugh Dickins &lt;hugh.dickins@tiscali.co.uk&gt;
Tested-by: Stefan Huber &lt;shuber2@gmail.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>shm: fix unused warnings on nommu</title>
<updated>2009-06-09T23:59:03Z</updated>
<author>
<name>Mike Frysinger</name>
<email>vapier@gentoo.org</email>
</author>
<published>2009-06-09T23:26:23Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=586c7e6a280580fd94b662bf486f9bb31098d14b'/>
<id>urn:sha1:586c7e6a280580fd94b662bf486f9bb31098d14b</id>
<content type='text'>
The massive nommu update (8feae131) resulted in these warnings:
ipc/shm.c: In function `sys_shmdt':
ipc/shm.c:974: warning: unused variable `size'
ipc/shm.c:972: warning: unused variable `next'

Signed-off-by: Mike Frysinger &lt;vapier@gentoo.org&gt;
Cc: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>namespaces: move get_mq() inside #ifdef CONFIG_SYSCTL</title>
<updated>2009-04-13T22:04:29Z</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>Geert.Uytterhoeven@sonycom.com</email>
</author>
<published>2009-04-13T21:39:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f26ec5baa67524b00311b8ec4626efc0a95925e1'/>
<id>urn:sha1:f26ec5baa67524b00311b8ec4626efc0a95925e1</id>
<content type='text'>
| ipc/mq_sysctl.c:26: warning: 'get_mq' defined but not used

Signed-off-by: Geert Uytterhoeven &lt;Geert.Uytterhoeven@sonycom.com&gt;
Acked-by: Serge Hallyn &lt;serue@us.ibm.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>namespaces: mqueue namespace: adapt sysctl</title>
<updated>2009-04-07T15:31:09Z</updated>
<author>
<name>Serge E. Hallyn</name>
<email>serue@us.ibm.com</email>
</author>
<published>2009-04-07T02:01:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=bdc8e5f85f9abe2e7c78dcf39d81f9a97178788b'/>
<id>urn:sha1:bdc8e5f85f9abe2e7c78dcf39d81f9a97178788b</id>
<content type='text'>
Largely inspired from ipc/ipc_sysctl.c.  This patch isolates the mqueue
sysctl stuff in its own file.

[akpm@linux-foundation.org: build fix]
Signed-off-by: Cedric Le Goater &lt;clg@fr.ibm.com&gt;
Signed-off-by: Nadia Derbey &lt;Nadia.Derbey@bull.net&gt;
Signed-off-by: Serge E. Hallyn &lt;serue@us.ibm.com&gt;
Cc: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>namespaces: ipc namespaces: implement support for posix msqueues</title>
<updated>2009-04-07T15:31:09Z</updated>
<author>
<name>Serge E. Hallyn</name>
<email>serue@us.ibm.com</email>
</author>
<published>2009-04-07T02:01:10Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7eafd7c74c3f2e67c27621b987b28397110d643f'/>
<id>urn:sha1:7eafd7c74c3f2e67c27621b987b28397110d643f</id>
<content type='text'>
Implement multiple mounts of the mqueue file system, and link it to usage
of CLONE_NEWIPC.

Each ipc ns has a corresponding mqueuefs superblock.  When a user does
clone(CLONE_NEWIPC) or unshare(CLONE_NEWIPC), the unshare will cause an
internal mount of a new mqueuefs sb linked to the new ipc ns.

When a user does 'mount -t mqueue mqueue /dev/mqueue', he mounts the
mqueuefs superblock.

Posix message queues can be worked with both through the mq_* system calls
(see mq_overview(7)), and through the VFS through the mqueue mount.  Any
usage of mq_open() and friends will work with the acting task's ipc
namespace.  Any actions through the VFS will work with the mqueuefs in
which the file was created.  So if a user doesn't remount mqueuefs after
unshare(CLONE_NEWIPC), mq_open("/ab") will not be reflected in "ls
/dev/mqueue".

If task a mounts mqueue for ipc_ns:1, then clones task b with a new ipcns,
ipcns:2, and then task a is the last task in ipc_ns:1 to exit, then (1)
ipc_ns:1 will be freed, (2) it's superblock will live on until task b
umounts the corresponding mqueuefs, and vfs actions will continue to
succeed, but (3) sb-&gt;s_fs_info will be NULL for the sb corresponding to
the deceased ipc_ns:1.

To make this happen, we must protect the ipc reference count when

a) a task exits and drops its ipcns-&gt;count, since it might be dropping
   it to 0 and freeing the ipcns

b) a task accesses the ipcns through its mqueuefs interface, since it
   bumps the ipcns refcount and might race with the last task in the ipcns
   exiting.

So the kref is changed to an atomic_t so we can use
atomic_dec_and_lock(&amp;ns-&gt;count,mq_lock), and every access to the ipcns
through ns = mqueuefs_sb-&gt;s_fs_info is protected by the same lock.

Signed-off-by: Cedric Le Goater &lt;clg@fr.ibm.com&gt;
Signed-off-by: Serge E. Hallyn &lt;serue@us.ibm.com&gt;
Cc: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>namespaces: mqueue ns: move mqueue_mnt into struct ipc_namespace</title>
<updated>2009-04-07T15:31:09Z</updated>
<author>
<name>Serge E. Hallyn</name>
<email>serue@us.ibm.com</email>
</author>
<published>2009-04-07T02:01:08Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=614b84cf4e4a920d2af32b8f147ea1e3b8c27ea6'/>
<id>urn:sha1:614b84cf4e4a920d2af32b8f147ea1e3b8c27ea6</id>
<content type='text'>
Move mqueue vfsmount plus a few tunables into the ipc_namespace struct.
The CONFIG_IPC_NS boolean and the ipc_namespace struct will serve both the
posix message queue namespaces and the SYSV ipc namespaces.

The sysctl code will be fixed separately in patch 3.  After just this
patch, making a change to posix mqueue tunables always changes the values
in the initial ipc namespace.

Signed-off-by: Cedric Le Goater &lt;clg@fr.ibm.com&gt;
Signed-off-by: Serge E. Hallyn &lt;serue@us.ibm.com&gt;
Cc: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6</title>
<updated>2009-04-03T04:09:10Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2009-04-03T04:09:10Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8fe74cf053de7ad2124a894996f84fa890a81093'/>
<id>urn:sha1:8fe74cf053de7ad2124a894996f84fa890a81093</id>
<content type='text'>
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
  Remove two unneeded exports and make two symbols static in fs/mpage.c
  Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225
  Trim includes of fdtable.h
  Don't crap into descriptor table in binfmt_som
  Trim includes in binfmt_elf
  Don't mess with descriptor table in load_elf_binary()
  Get rid of indirect include of fs_struct.h
  New helper - current_umask()
  check_unsafe_exec() doesn't care about signal handlers sharing
  New locking/refcounting for fs_struct
  Take fs_struct handling to new file (fs/fs_struct.c)
  Get rid of bumping fs_struct refcount in pivot_root(2)
  Kill unsharing fs_struct in __set_personality()
</content>
</entry>
<entry>
<title>proc_sysctl: use CONFIG_PROC_SYSCTL around ipc and utsname proc_handlers</title>
<updated>2009-04-03T02:05:01Z</updated>
<author>
<name>Serge E. Hallyn</name>
<email>serue@us.ibm.com</email>
</author>
<published>2009-04-02T23:58:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=11dea1900931ac73184b2f5163a13d24a4e572ea'/>
<id>urn:sha1:11dea1900931ac73184b2f5163a13d24a4e572ea</id>
<content type='text'>
As pointed out by Cedric Le Goater (in response to Alexey's original
comment wrt mqns), ipc_sysctl.c and utsname_sysctl.c are using
CONFIG_PROC_FS, not CONFIG_PROC_SYSCTL, to determine whether to define
the proc_handlers.  Change that.

Signed-off-by: Serge E. Hallyn &lt;serue@us.ibm.com&gt;
Cc: Cedric Le Goater &lt;clg@fr.ibm.com&gt;
Acked-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>ipc: make shm_get_stat() more robust</title>
<updated>2009-04-03T02:05:01Z</updated>
<author>
<name>Tony Battersby</name>
<email>tonyb@cybernetics.com</email>
</author>
<published>2009-04-02T23:58:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e562aebc6ccd4385cbbf24debe88ab4bb500c5b4'/>
<id>urn:sha1:e562aebc6ccd4385cbbf24debe88ab4bb500c5b4</id>
<content type='text'>
shm_get_stat() assumes idr_find(&amp;shm_ids(ns).ipcs_idr) returns "struct
shmid_kernel *"; all other callers assume that it returns "struct
kern_ipc_perm *".  This works because "struct kern_ipc_perm" is currently
the first member of "struct shmid_kernel", but it would be better to use
container_of() to prevent future breakage.

Signed-off-by: Tony Battersby &lt;tonyb@cybernetics.com&gt;
Cc: Jiri Olsa &lt;olsajiri@gmail.com&gt;
Cc: Jiri Kosina &lt;jkosina@suse.cz&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>New helper - current_umask()</title>
<updated>2009-04-01T03:00:26Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2009-03-29T23:08:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48'/>
<id>urn:sha1:ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48</id>
<content type='text'>
current-&gt;fs-&gt;umask is what most of fs_struct users are doing.
Put that into a helper function.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
</feed>
