2.6.6 memory allocation checks in SliceBlock()
PATCH 1/1 2.6.6 memory allocation checks in SliceBlock()
Adds memory allocation checks in SliceBlock()
./linux-2.6.6-modified/drivers/char/drm/sis_ds.c | 4 ++++ 1 files changed, 4 insertions(+)
diff -rupN ./linux-2.6.6/drivers/char/drm/sis_ds.c ./linux-2.6.6-modified/drivers/char/drm/sis_ds.c
--- ./linux-2.6.6/drivers/char/drm/sis_ds.c Mon May 10 05:33:19 2004
+++ ./linux-2.6.6-modified/drivers/char/drm/sis_ds.c Wed Jun 2 14:19:22
2004
@@ -231,6 +231,8 @@ static TMemBlock* SliceBlock(TMemBlock *
if (startofs > p->ofs) {
newblock = (TMemBlock*) DRM(calloc)(1, sizeof(TMemBlock),
DRM_MEM_DRIVER);
+ if (!newblock)
+ return NULL;
newblock->ofs = startofs;
newblock->size = p->size - (startofs - p->ofs); newblock->free = 1;
@@ -244,6 +246,8 @@ static TMemBlock* SliceBlock(TMemBlock *
if (size < p->size) {
newblock = (TMemBlock*) DRM(calloc)(1, sizeof(TMemBlock),
DRM_MEM_DRIVER);
+ if (!newblock)
+ return NULL;
newblock->ofs = startofs + size; newblock->size = p->size - size; newblock->free = 1;
Signature · 1 line
umka
On Sun, 06 Jun 2004 19:23:12 +0300 Yury Umanets wrote:
| Adds memory allocation checks in SliceBlock() | | ./linux-2.6.6-modified/drivers/char/drm/sis_ds.c | 4 ++++ | 1 files changed, 4 insertions(+) | | Signed-off-by: Yury Umanets <[email protected]> | | diff -rupN ./linux-2.6.6/drivers/char/drm/sis_ds.c | ./linux-2.6.6-modified/drivers/char/drm/sis_ds.c | --- ./linux-2.6.6/drivers/char/drm/sis_ds.c Mon May 10 05:33:19 2004 | +++ ./linux-2.6.6-modified/drivers/char/drm/sis_ds.c Wed Jun 2 14:19:22 | 2004 | @@ -231,6 +231,8 @@ static TMemBlock* SliceBlock(TMemBlock * | if (startofs > p->ofs) { | newblock = (TMemBlock*) DRM(calloc)(1, sizeof(TMemBlock), | DRM_MEM_DRIVER); | + if (!newblock) | + return NULL; | newblock->ofs = startofs; | newblock->size = p->size - (startofs - p->ofs); | newblock->free = 1; | @@ -244,6 +246,8 @@ static TMemBlock* SliceBlock(TMemBlock * | if (size < p->size) { | newblock = (TMemBlock*) DRM(calloc)(1, sizeof(TMemBlock), | DRM_MEM_DRIVER); | + if (!newblock) | + return NULL; | newblock->ofs = startofs + size; | newblock->size = p->size - size; | newblock->free = 1; | | --
These look like the right thing to do, but one caller of SliceBlock() has no error handling:
mmAllocMem():
p = SliceBlock(p,startofs,size,0,mask+1); p->heap = heap; return p;
However, callers of mmAllocMem() do have failure handling.
--
~Randy
Quoted 38 lines · Randy.Dunlap
On Sun, 06 Jun 2004 19:23:12 +0300 Yury Umanets wrote:
| Adds memory allocation checks in SliceBlock() | | ./linux-2.6.6-modified/drivers/char/drm/sis_ds.c | 4 ++++ | 1 files changed, 4 insertions(+) | | Signed-off-by: Yury Umanets <[email protected]> | | diff -rupN ./linux-2.6.6/drivers/char/drm/sis_ds.c | ./linux-2.6.6-modified/drivers/char/drm/sis_ds.c | --- ./linux-2.6.6/drivers/char/drm/sis_ds.c Mon May 10 05:33:19 2004 | +++ ./linux-2.6.6-modified/drivers/char/drm/sis_ds.c Wed Jun 2 14:19:22 | 2004 | @@ -231,6 +231,8 @@ static TMemBlock* SliceBlock(TMemBlock * | if (startofs > p->ofs) { | newblock = (TMemBlock*) DRM(calloc)(1, sizeof(TMemBlock), | DRM_MEM_DRIVER); | + if (!newblock) | + return NULL; | newblock->ofs = startofs; | newblock->size = p->size - (startofs - p->ofs); | newblock->free = 1; | @@ -244,6 +246,8 @@ static TMemBlock* SliceBlock(TMemBlock * | if (size < p->size) { | newblock = (TMemBlock*) DRM(calloc)(1, sizeof(TMemBlock), | DRM_MEM_DRIVER); | + if (!newblock) | + return NULL; | newblock->ofs = startofs + size; | newblock->size = p->size - size; | newblock->free = 1; | | --These look like the right thing to do, but one caller of
SliceBlock()has no error handling:
Quoted 7 lines
mmAllocMem():p = SliceBlock(p,startofs,size,0,mask+1); p->heap = heap; return p;However, callers of
mmAllocMem()do have failure handling.
Hello Randy,
This is fixed version:
./linux-2.6.6-modified/drivers/char/drm/sis_ds.c | 6 ++++++ 1 files changed, 6 insertions(+)
diff -rupN ./linux-2.6.6/drivers/char/drm/sis_ds.c ./linux-2.6.6-modified/drivers/char/drm/sis_ds.c
--- ./linux-2.6.6/drivers/char/drm/sis_ds.c Mon May 10 05:33:19 2004
+++ ./linux-2.6.6-modified/drivers/char/drm/sis_ds.c Mon Jun 7 18:41:41
2004
@@ -231,6 +231,8 @@ static TMemBlock* SliceBlock(TMemBlock *
if (startofs > p->ofs) {
newblock = (TMemBlock*) DRM(calloc)(1, sizeof(TMemBlock),
DRM_MEM_DRIVER);
+ if (!newblock)
+ return NULL;
newblock->ofs = startofs;
newblock->size = p->size - (startofs - p->ofs); newblock->free = 1;
@@ -244,6 +246,8 @@ static TMemBlock* SliceBlock(TMemBlock *
if (size < p->size) {
newblock = (TMemBlock*) DRM(calloc)(1, sizeof(TMemBlock),
DRM_MEM_DRIVER);
+ if (!newblock)
+ return NULL;
newblock->ofs = startofs + size; newblock->size = p->size - size; newblock->free = 1;
@@ -285,6 +289,8 @@ PMemBlock mmAllocMem( memHeap_t *heap, i
if (p == NULL)
return NULL;
p = SliceBlock(p,startofs,size,0,mask+1);
+ if (!p)
+ return NULL;
p->heap = heap;
return p;
}
Signature · 1 line
umka