All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manfred Spraul <manfred@colorfullife.com>
To: Davidlohr Bueso <davidlohr@hp.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	aswin@hp.com, LKML <linux-kernel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	Greg Thelen <gthelen@google.com>,
	Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [PATCH] ipc,shm: disable shmmax and shmall by default
Date: Sat, 12 Apr 2014 10:50:11 +0200	[thread overview]
Message-ID: <5348FE43.1070508@colorfullife.com> (raw)
In-Reply-To: <1397248035.2503.20.camel@buesod1.americas.hpqcorp.net>

On 04/11/2014 10:27 PM, Davidlohr Bueso wrote:
> On Fri, 2014-04-11 at 20:28 +0200, Manfred Spraul wrote:
>> Hi Davidlohr,
>>
>> On 04/03/2014 02:20 AM, Davidlohr Bueso wrote:
>>> The default size for shmmax is, and always has been, 32Mb.
>>> Today, in the XXI century, it seems that this value is rather small,
>>> making users have to increase it via sysctl, which can cause
>>> unnecessary work and userspace application workarounds[1].
>>>
>>> [snip]
>>> Running this patch through LTP, everything passes, except the following,
>>> which, due to the nature of this change, is quite expected:
>>>
>>> shmget02    1  TFAIL  :  call succeeded unexpectedly
>> Why is this TFAIL expected?
> So looking at shmget02.c, this is the case that fails:
>
> 		for (i = 0; i < TST_TOTAL; i++) {
> 			/*
> 			 * Look for a failure ...
> 			 */
>
> 			TEST(shmget(*(TC[i].skey), TC[i].size, TC[i].flags));
>
> 			if (TEST_RETURN != -1) {
> 				tst_resm(TFAIL, "call succeeded unexpectedly");
> 				continue;
> 			}
>
> Where TC[0] is:
> struct test_case_t {
> 	int *skey;
> 	int size;
> 	int flags;
> 	int error;
> } TC[] = {
> 	/* EINVAL - size is 0 */
> 	{
> 	&shmkey2, 0, IPC_CREAT | IPC_EXCL | SHM_RW, EINVAL},
>
> So it's expected because now 0 is actually valid. And before:
>
>   EINVAL A new segment was to be created and size < SHMMIN or size > SHMMAX
>
>>> diff --git a/ipc/shm.c b/ipc/shm.c
>>> index 7645961..ae01ffa 100644
>>> --- a/ipc/shm.c
>>> +++ b/ipc/shm.c
>>> @@ -490,10 +490,12 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
>>>    	int id;
>>>    	vm_flags_t acctflag = 0;
>>>    
>>> -	if (size < SHMMIN || size > ns->shm_ctlmax)
>>> +	if (ns->shm_ctlmax &&
>>> +	    (size < SHMMIN || size > ns->shm_ctlmax))
>>>    		return -EINVAL;
>>>    
>>> -	if (ns->shm_tot + numpages > ns->shm_ctlall)
>>> +	if (ns->shm_ctlall &&
>>> +	    ns->shm_tot + numpages > ns->shm_ctlall)
>>>    		return -ENOSPC;
>>>    
>>>    	shp = ipc_rcu_alloc(sizeof(*shp));
>> Ok, I understand it:
>> Your patch disables checking shmmax, shmall *AND* checking for SHMMIN.
> Right, if shmmax is 0, then there's no point checking for shmmin,
> otherwise we'd always end up returning EINVAL.
>
>> a) Have you double checked that 0-sized shm segments work properly?
>>    Does the swap code handle it properly, ...? EINVAL A new segment was to be created and size < SHMMIN or size > SHMMAX
> Hmm so I've been using this patch just fine on my laptop since I sent
> it. So far I haven't seen any issues. Are you refering to something in
> particular? I'd be happy to run any cases you're concerned with.
I'm thinking about malicious applications.
Create 0-sized segments and then map them. Does find_vma_intersection 
handle that case?
The same for all other functions that are called by the shm code.

You can't replace code review by "runs for a month"
>> b) It's that yet another risk for user space incompatibility?
> Sorry, I don't follow here.
Applications expect that shmget(,0,) fails.

--
     Manfred

--
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: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Manfred Spraul <manfred@colorfullife.com>
To: Davidlohr Bueso <davidlohr@hp.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	aswin@hp.com, LKML <linux-kernel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	Greg Thelen <gthelen@google.com>,
	Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [PATCH] ipc,shm: disable shmmax and shmall by default
Date: Sat, 12 Apr 2014 10:50:11 +0200	[thread overview]
Message-ID: <5348FE43.1070508@colorfullife.com> (raw)
In-Reply-To: <1397248035.2503.20.camel@buesod1.americas.hpqcorp.net>

On 04/11/2014 10:27 PM, Davidlohr Bueso wrote:
> On Fri, 2014-04-11 at 20:28 +0200, Manfred Spraul wrote:
>> Hi Davidlohr,
>>
>> On 04/03/2014 02:20 AM, Davidlohr Bueso wrote:
>>> The default size for shmmax is, and always has been, 32Mb.
>>> Today, in the XXI century, it seems that this value is rather small,
>>> making users have to increase it via sysctl, which can cause
>>> unnecessary work and userspace application workarounds[1].
>>>
>>> [snip]
>>> Running this patch through LTP, everything passes, except the following,
>>> which, due to the nature of this change, is quite expected:
>>>
>>> shmget02    1  TFAIL  :  call succeeded unexpectedly
>> Why is this TFAIL expected?
> So looking at shmget02.c, this is the case that fails:
>
> 		for (i = 0; i < TST_TOTAL; i++) {
> 			/*
> 			 * Look for a failure ...
> 			 */
>
> 			TEST(shmget(*(TC[i].skey), TC[i].size, TC[i].flags));
>
> 			if (TEST_RETURN != -1) {
> 				tst_resm(TFAIL, "call succeeded unexpectedly");
> 				continue;
> 			}
>
> Where TC[0] is:
> struct test_case_t {
> 	int *skey;
> 	int size;
> 	int flags;
> 	int error;
> } TC[] = {
> 	/* EINVAL - size is 0 */
> 	{
> 	&shmkey2, 0, IPC_CREAT | IPC_EXCL | SHM_RW, EINVAL},
>
> So it's expected because now 0 is actually valid. And before:
>
>   EINVAL A new segment was to be created and size < SHMMIN or size > SHMMAX
>
>>> diff --git a/ipc/shm.c b/ipc/shm.c
>>> index 7645961..ae01ffa 100644
>>> --- a/ipc/shm.c
>>> +++ b/ipc/shm.c
>>> @@ -490,10 +490,12 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
>>>    	int id;
>>>    	vm_flags_t acctflag = 0;
>>>    
>>> -	if (size < SHMMIN || size > ns->shm_ctlmax)
>>> +	if (ns->shm_ctlmax &&
>>> +	    (size < SHMMIN || size > ns->shm_ctlmax))
>>>    		return -EINVAL;
>>>    
>>> -	if (ns->shm_tot + numpages > ns->shm_ctlall)
>>> +	if (ns->shm_ctlall &&
>>> +	    ns->shm_tot + numpages > ns->shm_ctlall)
>>>    		return -ENOSPC;
>>>    
>>>    	shp = ipc_rcu_alloc(sizeof(*shp));
>> Ok, I understand it:
>> Your patch disables checking shmmax, shmall *AND* checking for SHMMIN.
> Right, if shmmax is 0, then there's no point checking for shmmin,
> otherwise we'd always end up returning EINVAL.
>
>> a) Have you double checked that 0-sized shm segments work properly?
>>    Does the swap code handle it properly, ...? EINVAL A new segment was to be created and size < SHMMIN or size > SHMMAX
> Hmm so I've been using this patch just fine on my laptop since I sent
> it. So far I haven't seen any issues. Are you refering to something in
> particular? I'd be happy to run any cases you're concerned with.
I'm thinking about malicious applications.
Create 0-sized segments and then map them. Does find_vma_intersection 
handle that case?
The same for all other functions that are called by the shm code.

You can't replace code review by "runs for a month"
>> b) It's that yet another risk for user space incompatibility?
> Sorry, I don't follow here.
Applications expect that shmget(,0,) fails.

--
     Manfred

  parent reply	other threads:[~2014-04-12  8:50 UTC|newest]

Thread overview: 114+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-31  3:06 [PATCH] ipc,shm: increase default size for shmmax Davidlohr Bueso
2014-03-31  3:06 ` Davidlohr Bueso
2014-03-31 21:32 ` Andrew Morton
2014-03-31 21:32   ` Andrew Morton
2014-03-31 22:59   ` Davidlohr Bueso
2014-03-31 22:59     ` Davidlohr Bueso
2014-03-31 23:13     ` Andrew Morton
2014-03-31 23:13       ` Andrew Morton
2014-03-31 23:25       ` Davidlohr Bueso
2014-03-31 23:25         ` Davidlohr Bueso
2014-04-01  0:05         ` Andrew Morton
2014-04-01  0:05           ` Andrew Morton
2014-04-01  6:29           ` Kamezawa Hiroyuki
2014-04-01  6:29             ` Kamezawa Hiroyuki
2014-04-01 19:19             ` Andrew Morton
2014-04-01 19:19               ` Andrew Morton
2014-04-01 20:15               ` KOSAKI Motohiro
2014-04-01 20:15                 ` KOSAKI Motohiro
2014-04-01 20:26                 ` Davidlohr Bueso
2014-04-01 20:26                   ` Davidlohr Bueso
2014-04-02  0:11                 ` Kamezawa Hiroyuki
2014-04-02  0:11                   ` Kamezawa Hiroyuki
2014-04-02  1:02               ` Kamezawa Hiroyuki
2014-04-02  1:02                 ` Kamezawa Hiroyuki
2014-04-02 14:55               ` One Thousand Gnomes
2014-04-02 14:55                 ` One Thousand Gnomes
2014-04-02 23:47                 ` Kamezawa Hiroyuki
2014-04-02 23:47                   ` Kamezawa Hiroyuki
2014-04-01 17:01           ` Davidlohr Bueso
2014-04-01 17:01             ` Davidlohr Bueso
2014-04-01 18:10             ` KOSAKI Motohiro
2014-04-01 18:10               ` KOSAKI Motohiro
2014-04-01 18:31               ` Davidlohr Bueso
2014-04-01 18:31                 ` Davidlohr Bueso
2014-04-01 19:51                 ` KOSAKI Motohiro
2014-04-01 19:51                   ` KOSAKI Motohiro
2014-04-01 21:01                   ` Davidlohr Bueso
2014-04-01 21:01                     ` Davidlohr Bueso
2014-04-01 21:12                     ` KOSAKI Motohiro
2014-04-01 21:12                       ` KOSAKI Motohiro
2014-04-01 21:29                       ` Andrew Morton
2014-04-01 21:29                         ` Andrew Morton
2014-04-01 21:41                         ` KOSAKI Motohiro
2014-04-01 21:41                           ` KOSAKI Motohiro
2014-04-01 21:48                           ` Andrew Morton
2014-04-01 21:48                             ` Andrew Morton
2014-04-01 22:02                             ` Davidlohr Bueso
2014-04-01 22:02                               ` Davidlohr Bueso
2014-04-01 22:08                               ` Andrew Morton
2014-04-01 22:08                                 ` Andrew Morton
2014-04-13 18:05                                 ` Manfred Spraul
2014-04-13 18:05                                   ` Manfred Spraul
2014-04-13 23:15                                   ` Davidlohr Bueso
2014-04-13 23:15                                     ` Davidlohr Bueso
2014-04-16 22:46                                   ` Andrew Morton
2014-04-16 22:46                                     ` Andrew Morton
2014-04-16 23:19                                     ` Davidlohr Bueso
2014-04-16 23:19                                       ` Davidlohr Bueso
2014-04-17 10:41                                     ` Michael Kerrisk
2014-04-17 10:41                                       ` Michael Kerrisk
2014-04-17 16:41                                       ` Manfred Spraul
2014-04-17 16:41                                         ` Manfred Spraul
2014-04-17 20:19                                         ` Michael Kerrisk (man-pages)
2014-04-17 20:19                                           ` Michael Kerrisk (man-pages)
2014-04-01 22:49                             ` KOSAKI Motohiro
2014-04-01 22:49                               ` KOSAKI Motohiro
2014-04-01 23:28                               ` Davidlohr Bueso
2014-04-01 23:28                                 ` Davidlohr Bueso
2014-04-01 23:56                                 ` KOSAKI Motohiro
2014-04-01 23:56                                   ` KOSAKI Motohiro
2014-04-02  0:40                                   ` Davidlohr Bueso
2014-04-02  0:40                                     ` Davidlohr Bueso
2014-04-02  1:08                                     ` Greg Thelen
2014-04-02  1:08                                       ` Greg Thelen
2014-04-02  1:58                                       ` Kamezawa Hiroyuki
2014-04-02  1:58                                         ` Kamezawa Hiroyuki
2014-04-02  2:11                                         ` Greg Thelen
2014-04-02  2:11                                           ` Greg Thelen
2014-04-03  0:20                                   ` [PATCH] ipc,shm: disable shmmax and shmall by default Davidlohr Bueso
2014-04-03  0:20                                     ` Davidlohr Bueso
2014-04-03 14:07                                     ` Kamezawa Hiroyuki
2014-04-03 14:07                                       ` Kamezawa Hiroyuki
2014-04-03 19:02                                     ` Manfred Spraul
2014-04-03 19:02                                       ` Manfred Spraul
2014-04-03 19:50                                       ` Davidlohr Bueso
2014-04-03 19:50                                         ` Davidlohr Bueso
2014-04-03 23:39                                         ` KOSAKI Motohiro
2014-04-03 23:39                                           ` KOSAKI Motohiro
2014-04-04  5:00                                           ` Davidlohr Bueso
2014-04-04  5:00                                             ` Davidlohr Bueso
2014-04-05 18:24                                             ` KOSAKI Motohiro
2014-04-05 18:24                                               ` KOSAKI Motohiro
2014-04-06  6:42                                               ` Manfred Spraul
2014-04-06  6:42                                                 ` Manfred Spraul
2014-04-06 16:54                                                 ` Davidlohr Bueso
2014-04-06 16:54                                                   ` Davidlohr Bueso
2014-04-03 22:29                                     ` KOSAKI Motohiro
2014-04-03 22:29                                       ` KOSAKI Motohiro
2014-04-03 23:47                                     ` KOSAKI Motohiro
2014-04-03 23:47                                       ` KOSAKI Motohiro
2014-04-11 18:28                                     ` Manfred Spraul
2014-04-11 18:28                                       ` Manfred Spraul
2014-04-11 20:27                                       ` Davidlohr Bueso
2014-04-11 20:27                                         ` Davidlohr Bueso
2014-04-11 20:48                                         ` Davidlohr Bueso
2014-04-11 20:48                                           ` Davidlohr Bueso
2014-04-12  8:50                                         ` Manfred Spraul [this message]
2014-04-12  8:50                                           ` Manfred Spraul
2014-04-12 15:33                                           ` Davidlohr Bueso
2014-04-12 15:33                                             ` Davidlohr Bueso
2014-04-01 21:43                       ` [PATCH] ipc,shm: increase default size for shmmax Davidlohr Bueso
2014-04-01 21:43                         ` Davidlohr Bueso
2014-04-01 19:26             ` Andrew Morton
2014-04-01 19:26               ` Andrew Morton

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=5348FE43.1070508@colorfullife.com \
    --to=manfred@colorfullife.com \
    --cc=akpm@linux-foundation.org \
    --cc=aswin@hp.com \
    --cc=davidlohr@hp.com \
    --cc=gthelen@google.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kosaki.motohiro@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /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.