From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753058AbcKSSrd (ORCPT ); Sat, 19 Nov 2016 13:47:33 -0500 Received: from out01.mta.xmission.com ([166.70.13.231]:33796 "EHLO out01.mta.xmission.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752414AbcKSSra (ORCPT ); Sat, 19 Nov 2016 13:47:30 -0500 From: ebiederm@xmission.com (Eric W. Biederman) To: Willy Tarreau Cc: Linux Containers , Oleg Nesterov , "linux-kernel\@vger.kernel.org" , "linux-mm\@kvack.org" , Linux FS Devel , Michal Hocko , Jann Horn , Kees Cook , Andy Lutomirski References: <87y41kjn6l.fsf@xmission.com> <20161019172917.GE1210@laptop.thejh.net> <87pomwi5p2.fsf@xmission.com> <87pomwghda.fsf@xmission.com> <87twb6avk8.fsf_-_@xmission.com> <20161119071700.GA13347@1wt.eu> <20161119092804.GA13553@1wt.eu> Date: Sat, 19 Nov 2016 12:44:49 -0600 In-Reply-To: <20161119092804.GA13553@1wt.eu> (Willy Tarreau's message of "Sat, 19 Nov 2016 10:28:04 +0100") Message-ID: <87vavjia1q.fsf@xmission.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-XM-SPF: eid=1c8Afb-0001jn-9R;;;mid=<87vavjia1q.fsf@xmission.com>;;;hst=in01.mta.xmission.com;;;ip=75.170.125.99;;;frm=ebiederm@xmission.com;;;spf=neutral X-XM-AID: U2FsdGVkX1/ddYmGGlN4YqOvc9uwLYfFecwMhSRycLs= X-SA-Exim-Connect-IP: 75.170.125.99 X-SA-Exim-Mail-From: ebiederm@xmission.com X-Spam-Report: * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * 0.0 TVD_RCVD_IP Message was received from an IP address * 1.5 XMNoVowels Alpha-numberic number with no vowels * 0.7 XMSubLong Long Subject * 1.5 TR_Symld_Words too many words that have symbols inside * 1.2 LotsOfNums_01 BODY: Lots of long strings of numbers * 0.0 T_TM2_M_HEADER_IN_MSG BODY: No description available. * 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% * [score: 0.5000] * -0.0 DCC_CHECK_NEGATIVE Not listed in DCC * [sa06 1397; Body=1 Fuz1=1 Fuz2=1] X-Spam-DCC: XMission; sa06 1397; Body=1 Fuz1=1 Fuz2=1 X-Spam-Combo: ****;Willy Tarreau X-Spam-Relay-Country: X-Spam-Timing: total 5544 ms - load_scoreonly_sql: 0.04 (0.0%), signal_user_changed: 3.9 (0.1%), b_tie_ro: 2.7 (0.0%), parse: 1.10 (0.0%), extract_message_metadata: 14 (0.2%), get_uri_detail_list: 3.6 (0.1%), tests_pri_-1000: 6 (0.1%), tests_pri_-950: 1.13 (0.0%), tests_pri_-900: 0.95 (0.0%), tests_pri_-400: 30 (0.5%), check_bayes: 29 (0.5%), b_tokenize: 11 (0.2%), b_tok_get_all: 9 (0.2%), b_comp_prob: 2.5 (0.0%), b_tok_touch_all: 3.9 (0.1%), b_finish: 0.74 (0.0%), tests_pri_0: 312 (5.6%), check_dkim_signature: 0.65 (0.0%), check_dkim_adsp: 3.1 (0.1%), tests_pri_500: 5172 (93.3%), poll_dns_idle: 5165 (93.2%), rewrite_mail: 0.00 (0.0%) Subject: Re: [REVIEW][PATCH 0/3] Fixing ptrace vs exec vs userns interactions X-Spam-Flag: No X-SA-Exim-Version: 4.2.1 (built Thu, 05 May 2016 13:38:54 -0600) X-SA-Exim-Scanned: Yes (on in01.mta.xmission.com) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Willy Tarreau writes: > On Sat, Nov 19, 2016 at 08:17:00AM +0100, Willy Tarreau wrote: >> Hi Eric, >> >> On Thu, Nov 17, 2016 at 11:02:47AM -0600, Eric W. Biederman wrote: >> > >> > With everyone heading to Kernel Summit and Plumbers I put this set of >> > patches down temporarily. Now is the time to take it back up and to >> > make certain I am not missing something stupid in this set of patches. >> >> I couldn't get your patch set to apply to any of the kernels I tried, >> I manually adjusted some parts but the second one has too many rejects. >> What kernel should I apply this to ? Or maybe some preliminary patches >> are needed ? > > OK I finally managed to get it to work on top of 4.8.9 (required less changes > than master). I also had to drop the user_ns changes since there's no such > user_ns in mm_struct there. > > I could run a test on it, that looks reasonable : > > FS: > > admin@vm:~$ strace -e trace=fstat,uname,ioctl,open uname > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7f3f9a1663e3, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {...}) = 0 > open(0x7ffd01bbee80, O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {...}) = 0 > uname({...}) = 0 > fstat(1, {...}) = 0 > ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7ffd01bbf400) = 0 > > admin@vm:~$ sudo strace -e trace=fstat,uname,ioctl,open uname > open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0555, st_size=101312, ...}) = 0 > open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0555, st_size=1479016, ...}) = 0 > uname({sys="Linux", node="vm", ...}) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(4, 64), ...}) = 0 > ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B9600 opost isig icanon echo ...}) = 0 > > Network: > > admin@vm:~$ strace -e trace=socket,setsockopt,connect /tmp/nc 198.18.3 22 > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {...}, 110) = -1 ENOENT (No such file or directory) > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {...}, 110) = -1 ENOENT (No such file or directory) > socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3 > setsockopt(3, SOL_SOCKET, SO_REUSEADDR, 0x7ffd2c26bdbc, 4) = 0 > connect(3, {...}, 16) = 0 > > admin@vm:~$ sudo strace -e trace=socket,setsockopt,connect /tmp/nc 198.18.3 22 > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) > socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3 > setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 > connect(3, {sa_family=AF_INET, sin_port=htons(22), sin_addr=inet_addr("198.18.0.3")}, 16) = 0 > > So in short now we can at least see what syscall fails eventhough we can't > know why. I think it can be an acceptable trade-off. Thanks for testing, and thanks for you acceptance even if I didn't make it easy for you. Eric From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: ebiederm@xmission.com (Eric W. Biederman) To: Willy Tarreau Cc: Linux Containers , Oleg Nesterov , "linux-kernel\@vger.kernel.org" , "linux-mm\@kvack.org" , Linux FS Devel , Michal Hocko , Jann Horn , Kees Cook , Andy Lutomirski References: <87y41kjn6l.fsf@xmission.com> <20161019172917.GE1210@laptop.thejh.net> <87pomwi5p2.fsf@xmission.com> <87pomwghda.fsf@xmission.com> <87twb6avk8.fsf_-_@xmission.com> <20161119071700.GA13347@1wt.eu> <20161119092804.GA13553@1wt.eu> Date: Sat, 19 Nov 2016 12:44:49 -0600 In-Reply-To: <20161119092804.GA13553@1wt.eu> (Willy Tarreau's message of "Sat, 19 Nov 2016 10:28:04 +0100") Message-ID: <87vavjia1q.fsf@xmission.com> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [REVIEW][PATCH 0/3] Fixing ptrace vs exec vs userns interactions Sender: owner-linux-mm@kvack.org List-ID: Willy Tarreau writes: > On Sat, Nov 19, 2016 at 08:17:00AM +0100, Willy Tarreau wrote: >> Hi Eric, >> >> On Thu, Nov 17, 2016 at 11:02:47AM -0600, Eric W. Biederman wrote: >> > >> > With everyone heading to Kernel Summit and Plumbers I put this set of >> > patches down temporarily. Now is the time to take it back up and to >> > make certain I am not missing something stupid in this set of patches. >> >> I couldn't get your patch set to apply to any of the kernels I tried, >> I manually adjusted some parts but the second one has too many rejects. >> What kernel should I apply this to ? Or maybe some preliminary patches >> are needed ? > > OK I finally managed to get it to work on top of 4.8.9 (required less changes > than master). I also had to drop the user_ns changes since there's no such > user_ns in mm_struct there. > > I could run a test on it, that looks reasonable : > > FS: > > admin@vm:~$ strace -e trace=fstat,uname,ioctl,open uname > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7f3f9a1663e3, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {...}) = 0 > open(0x7ffd01bbee80, O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {...}) = 0 > uname({...}) = 0 > fstat(1, {...}) = 0 > ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7ffd01bbf400) = 0 > > admin@vm:~$ sudo strace -e trace=fstat,uname,ioctl,open uname > open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0555, st_size=101312, ...}) = 0 > open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0555, st_size=1479016, ...}) = 0 > uname({sys="Linux", node="vm", ...}) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(4, 64), ...}) = 0 > ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B9600 opost isig icanon echo ...}) = 0 > > Network: > > admin@vm:~$ strace -e trace=socket,setsockopt,connect /tmp/nc 198.18.3 22 > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {...}, 110) = -1 ENOENT (No such file or directory) > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {...}, 110) = -1 ENOENT (No such file or directory) > socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3 > setsockopt(3, SOL_SOCKET, SO_REUSEADDR, 0x7ffd2c26bdbc, 4) = 0 > connect(3, {...}, 16) = 0 > > admin@vm:~$ sudo strace -e trace=socket,setsockopt,connect /tmp/nc 198.18.3 22 > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) > socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3 > setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 > connect(3, {sa_family=AF_INET, sin_port=htons(22), sin_addr=inet_addr("198.18.0.3")}, 16) = 0 > > So in short now we can at least see what syscall fails eventhough we can't > know why. I think it can be an acceptable trade-off. Thanks for testing, and thanks for you acceptance even if I didn't make it easy for you. Eric -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f72.google.com (mail-pg0-f72.google.com [74.125.83.72]) by kanga.kvack.org (Postfix) with ESMTP id 94F056B04A7 for ; Sat, 19 Nov 2016 13:47:30 -0500 (EST) Received: by mail-pg0-f72.google.com with SMTP id q10so310823830pgq.7 for ; Sat, 19 Nov 2016 10:47:30 -0800 (PST) Received: from out01.mta.xmission.com (out01.mta.xmission.com. [166.70.13.231]) by mx.google.com with ESMTPS id o63si14103710pfi.114.2016.11.19.10.47.29 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 19 Nov 2016 10:47:29 -0800 (PST) From: ebiederm@xmission.com (Eric W. Biederman) References: <87y41kjn6l.fsf@xmission.com> <20161019172917.GE1210@laptop.thejh.net> <87pomwi5p2.fsf@xmission.com> <87pomwghda.fsf@xmission.com> <87twb6avk8.fsf_-_@xmission.com> <20161119071700.GA13347@1wt.eu> <20161119092804.GA13553@1wt.eu> Date: Sat, 19 Nov 2016 12:44:49 -0600 In-Reply-To: <20161119092804.GA13553@1wt.eu> (Willy Tarreau's message of "Sat, 19 Nov 2016 10:28:04 +0100") Message-ID: <87vavjia1q.fsf@xmission.com> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [REVIEW][PATCH 0/3] Fixing ptrace vs exec vs userns interactions Sender: owner-linux-mm@kvack.org List-ID: To: Willy Tarreau Cc: Linux Containers , Oleg Nesterov , "linux-kernel@vger.kernel.org" , "linux-mm@kvack.org" , Linux FS Devel , Michal Hocko , Jann Horn , Kees Cook , Andy Lutomirski Willy Tarreau writes: > On Sat, Nov 19, 2016 at 08:17:00AM +0100, Willy Tarreau wrote: >> Hi Eric, >> >> On Thu, Nov 17, 2016 at 11:02:47AM -0600, Eric W. Biederman wrote: >> > >> > With everyone heading to Kernel Summit and Plumbers I put this set of >> > patches down temporarily. Now is the time to take it back up and to >> > make certain I am not missing something stupid in this set of patches. >> >> I couldn't get your patch set to apply to any of the kernels I tried, >> I manually adjusted some parts but the second one has too many rejects. >> What kernel should I apply this to ? Or maybe some preliminary patches >> are needed ? > > OK I finally managed to get it to work on top of 4.8.9 (required less changes > than master). I also had to drop the user_ns changes since there's no such > user_ns in mm_struct there. > > I could run a test on it, that looks reasonable : > > FS: > > admin@vm:~$ strace -e trace=fstat,uname,ioctl,open uname > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7f3f9a1663e3, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open(0x7ffd01bbeeb0, O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {...}) = 0 > open(0x7ffd01bbee80, O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {...}) = 0 > uname({...}) = 0 > fstat(1, {...}) = 0 > ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7ffd01bbf400) = 0 > > admin@vm:~$ sudo strace -e trace=fstat,uname,ioctl,open uname > open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0555, st_size=101312, ...}) = 0 > open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 > fstat(3, {st_mode=S_IFREG|0555, st_size=1479016, ...}) = 0 > uname({sys="Linux", node="vm", ...}) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(4, 64), ...}) = 0 > ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B9600 opost isig icanon echo ...}) = 0 > > Network: > > admin@vm:~$ strace -e trace=socket,setsockopt,connect /tmp/nc 198.18.3 22 > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {...}, 110) = -1 ENOENT (No such file or directory) > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {...}, 110) = -1 ENOENT (No such file or directory) > socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3 > setsockopt(3, SOL_SOCKET, SO_REUSEADDR, 0x7ffd2c26bdbc, 4) = 0 > connect(3, {...}, 16) = 0 > > admin@vm:~$ sudo strace -e trace=socket,setsockopt,connect /tmp/nc 198.18.3 22 > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) > socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3 > connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) > socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3 > setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 > connect(3, {sa_family=AF_INET, sin_port=htons(22), sin_addr=inet_addr("198.18.0.3")}, 16) = 0 > > So in short now we can at least see what syscall fails eventhough we can't > know why. I think it can be an acceptable trade-off. Thanks for testing, and thanks for you acceptance even if I didn't make it easy for you. Eric -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org