Re: [PATCH] dlm: check the maximum size of a request from user

2012-09-10 Thread David Teigland
On Sun, Sep 09, 2012 at 04:16:58PM +0200, Sasha Levin wrote:
> device_write only checks whether the request size is big enough, but it 
> doesn't
> check if the size is too big.
> 
> At that point, it also tries to allocate as much memory as the user has 
> requested
> even if it's too much. This can lead to OOM killer kicking in, or memory 
> corruption
> if (count + 1) overflows.

thanks, pushed to next

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] dlm: check the maximum size of a request from user

2012-09-10 Thread David Teigland
On Sun, Sep 09, 2012 at 04:16:58PM +0200, Sasha Levin wrote:
 device_write only checks whether the request size is big enough, but it 
 doesn't
 check if the size is too big.
 
 At that point, it also tries to allocate as much memory as the user has 
 requested
 even if it's too much. This can lead to OOM killer kicking in, or memory 
 corruption
 if (count + 1) overflows.

thanks, pushed to next

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] dlm: check the maximum size of a request from user

2012-09-09 Thread Sasha Levin
device_write only checks whether the request size is big enough, but it doesn't
check if the size is too big.

At that point, it also tries to allocate as much memory as the user has 
requested
even if it's too much. This can lead to OOM killer kicking in, or memory 
corruption
if (count + 1) overflows.

Signed-off-by: Sasha Levin 
---
 fs/dlm/user.c | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/fs/dlm/user.c b/fs/dlm/user.c
index eb4ed9b..7ff4985 100644
--- a/fs/dlm/user.c
+++ b/fs/dlm/user.c
@@ -503,6 +503,13 @@ static ssize_t device_write(struct file *file, const char 
__user *buf,
 #endif
return -EINVAL;
 
+#ifdef CONFIG_COMPAT
+   if (count > sizeof(struct dlm_write_request32) + DLM_RESNAME_MAXLEN)
+#else
+   if (count > sizeof(struct dlm_write_request) + DLM_RESNAME_MAXLEN)
+#endif
+   return -EINVAL;
+
kbuf = kzalloc(count + 1, GFP_NOFS);
if (!kbuf)
return -ENOMEM;
-- 
1.7.12

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] dlm: check the maximum size of a request from user

2012-09-09 Thread Sasha Levin
device_write only checks whether the request size is big enough, but it doesn't
check if the size is too big.

At that point, it also tries to allocate as much memory as the user has 
requested
even if it's too much. This can lead to OOM killer kicking in, or memory 
corruption
if (count + 1) overflows.

Signed-off-by: Sasha Levin levinsasha...@gmail.com
---
 fs/dlm/user.c | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/fs/dlm/user.c b/fs/dlm/user.c
index eb4ed9b..7ff4985 100644
--- a/fs/dlm/user.c
+++ b/fs/dlm/user.c
@@ -503,6 +503,13 @@ static ssize_t device_write(struct file *file, const char 
__user *buf,
 #endif
return -EINVAL;
 
+#ifdef CONFIG_COMPAT
+   if (count  sizeof(struct dlm_write_request32) + DLM_RESNAME_MAXLEN)
+#else
+   if (count  sizeof(struct dlm_write_request) + DLM_RESNAME_MAXLEN)
+#endif
+   return -EINVAL;
+
kbuf = kzalloc(count + 1, GFP_NOFS);
if (!kbuf)
return -ENOMEM;
-- 
1.7.12

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/