diff options
| author | Doug Warzecha <Douglas_Warzecha@dell.com> | 2006-10-20 02:29:09 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-20 13:26:44 -0400 |
| commit | b95936cb9267e4c90a0b92361609ef5fd85a0a5f (patch) | |
| tree | c6925759f6539a9f54fd20022a4f6bd79475cabc | |
| parent | 1cd441f99819abdd2d919ff13e8c75af58a0fd9c (diff) | |
[PATCH] firmware/dcdbas: add size check in smi_data_write
Add a size check in smi_data_write to prevent possible wrapping problems
with large pos values when calling smi_data_buf_realloc on 32-bit.
Signed-off-by: Doug Warzecha <Douglas_Warzecha@dell.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | drivers/firmware/dcdbas.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/firmware/dcdbas.c b/drivers/firmware/dcdbas.c index 8bcb58cd4ac0..1865b56fb141 100644 --- a/drivers/firmware/dcdbas.c +++ b/drivers/firmware/dcdbas.c | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | * | 8 | * |
| 9 | * See Documentation/dcdbas.txt for more information. | 9 | * See Documentation/dcdbas.txt for more information. |
| 10 | * | 10 | * |
| 11 | * Copyright (C) 1995-2005 Dell Inc. | 11 | * Copyright (C) 1995-2006 Dell Inc. |
| 12 | * | 12 | * |
| 13 | * This program is free software; you can redistribute it and/or modify | 13 | * This program is free software; you can redistribute it and/or modify |
| 14 | * it under the terms of the GNU General Public License v2.0 as published by | 14 | * it under the terms of the GNU General Public License v2.0 as published by |
| @@ -40,7 +40,7 @@ | |||
| 40 | #include "dcdbas.h" | 40 | #include "dcdbas.h" |
| 41 | 41 | ||
| 42 | #define DRIVER_NAME "dcdbas" | 42 | #define DRIVER_NAME "dcdbas" |
| 43 | #define DRIVER_VERSION "5.6.0-2" | 43 | #define DRIVER_VERSION "5.6.0-3.2" |
| 44 | #define DRIVER_DESCRIPTION "Dell Systems Management Base Driver" | 44 | #define DRIVER_DESCRIPTION "Dell Systems Management Base Driver" |
| 45 | 45 | ||
| 46 | static struct platform_device *dcdbas_pdev; | 46 | static struct platform_device *dcdbas_pdev; |
| @@ -175,6 +175,9 @@ static ssize_t smi_data_write(struct kobject *kobj, char *buf, loff_t pos, | |||
| 175 | { | 175 | { |
| 176 | ssize_t ret; | 176 | ssize_t ret; |
| 177 | 177 | ||
| 178 | if ((pos + count) > MAX_SMI_DATA_BUF_SIZE) | ||
| 179 | return -EINVAL; | ||
| 180 | |||
| 178 | mutex_lock(&smi_data_lock); | 181 | mutex_lock(&smi_data_lock); |
| 179 | 182 | ||
| 180 | ret = smi_data_buf_realloc(pos + count); | 183 | ret = smi_data_buf_realloc(pos + count); |
