Subject: + lib-scatterlist-error-handling-in-__sg_alloc_table.patch added to -mm tree To: dan.carpenter@xxxxxxxxxx,akinobu.mita@xxxxxxxxx,daniel.vetter@xxxxxxxx,imre.deak@xxxxxxxxx,maximlevitsky@xxxxxxxxx,tj@xxxxxxxxxx From: akpm@xxxxxxxxxxxxxxxxxxxx Date: Wed, 26 Jun 2013 14:33:01 -0700 The patch titled Subject: lib/scatterlist: error handling in __sg_alloc_table() has been added to the -mm tree. Its filename is lib-scatterlist-error-handling-in-__sg_alloc_table.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Subject: 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 <dan.carpenter@xxxxxxxxxx> Cc: Akinobu Mita <akinobu.mita@xxxxxxxxx> Cc: Imre Deak <imre.deak@xxxxxxxxx> Cc: Tejun Heo <tj@xxxxxxxxxx> Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> Cc: Maxim Levitsky <maximlevitsky@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- lib/scatterlist.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff -puN lib/scatterlist.c~lib-scatterlist-error-handling-in-__sg_alloc_table lib/scatterlist.c --- a/lib/scatterlist.c~lib-scatterlist-error-handling-in-__sg_alloc_table +++ a/lib/scatterlist.c @@ -247,13 +247,15 @@ int __sg_alloc_table(struct sg_table *ta 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 { _ Patches currently in -mm which might be from dan.carpenter@xxxxxxxxxx are linux-next.patch fanotify-info-leak-in-copy_event_to_user.patch configfs-use-capped-length-for-store_attribute.patch drivers-cdrom-cdromc-use-kzalloc-for-failing-hardware.patch fs-convert-fs-shrinkers-to-new-scan-count-api-fix-fix.patch mm-vmallocc-unbreak-__vunmap.patch errh-is_err-can-accept-__user-pointers.patch drivers-misc-sgi-gru-grufaultc-fix-a-sanity-test-in-gru_set_context_option.patch rbtree-remove-unneeded-include.patch rbtree-remove-unneeded-include-fix.patch documentation-codingstyle-allow-multiple-return-statements-per-function.patch mwave-fix-info-leak-in-mwave_ioctl.patch lib-scatterlist-error-handling-in-__sg_alloc_table.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html