lib/scatterlist: error handling in __sg_alloc_table()
PATCH 1/1 lib/scatterlist: error handling in __sg_alloc_table()
I was reviewing code which I suspected might allocate a zero size SG table. That will cause memory corruption. Also we can't return before doing the memset or we could end up using uninitialized memory in the cleanup path.
Signed-off-by Dan Carpenter <[email protected]>
lib/scatterlist.c +4 -2
@@ -247,13 +247,15 @@ int __sg_alloc_table(struct sg_table *table, unsigned int nents,struct scatterlist *sg, *prv;unsigned int left; +memset (table,0 ,sizeof (*table)); + +if (nents ==0 ) +return -EINVAL ;#ifndef ARCH_HAS_SG_CHAIN if (WARN_ON_ONCE (nents > max_ents))return -EINVAL ;#endif -memset (table,0 ,sizeof (*table)); - left = nents; prv =NULL ; do {