From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S263031AbVHERtm (ORCPT ); Fri, 5 Aug 2005 13:49:42 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S263085AbVHERtm (ORCPT ); Fri, 5 Aug 2005 13:49:42 -0400 Received: from wproxy.gmail.com ([64.233.184.198]:58399 "EHLO wproxy.gmail.com") by vger.kernel.org with ESMTP id S263031AbVHERtV convert rfc822-to-8bit (ORCPT ); Fri, 5 Aug 2005 13:49:21 -0400 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=GHQXWpkEHyc0UKHXvr8kgDx7CHoLo7yuwiyLOHWzO7EtUjd42pdHvXVLl9lsxCB7UqsfphmexmzfORE/75W4gil7BuSNzwTbF7W4TX4zX3vfHmTYR7tJZOzBhIOCNHnSlQEsKdAMptFg3nwDLOTiJoh5woPsJQ10srgndV27d4U= Message-ID: Date: Fri, 5 Aug 2005 10:49:16 -0700 From: Stephen Pollei Reply-To: Stephen Pollei To: Roman Zippel Subject: Re: [PATCH] kernel: use kcalloc instead kmalloc/memset Cc: Arjan van de Ven , Andrew Morton , Pekka J Enberg , linux-kernel@vger.kernel.org, pmarques@grupopie.com, Linus Torvalds In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7BIT Content-Disposition: inline References: <1123219747.20398.1.camel@localhost> <20050804223842.2b3abeee.akpm@osdl.org> <20050804233634.1406e92a.akpm@osdl.org> <1123235219.3239.46.camel@laptopd505.fenrus.org> <1123236831.3239.55.camel@laptopd505.fenrus.org> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org On 8/5/05, Roman Zippel wrote: > On Fri, 5 Aug 2005, Arjan van de Ven wrote: > > > This would imply a similiar kmalloc() would be useful as well. > > > Second, how relevant is it for the kernel? > > we've had a non-negliable amount of security holes because of this > So why don't we have a similiar kmalloc()? You mean something like: static void __bad_kmalloc_safe_nonconstant_size(void); static void __bad_kmalloc_safe_zero_size(void); static void __bad_kmalloc_safe_too_large_size(void); static void __bad_kmalloc_safe_too_large(void); static inline void *kmalloc_safe(size_t nmemb, size_t size,int flags) { if (!__builtin_constant_p(size)) __bad_kmalloc_safe_nonconstant_size(); if ( !size ) __bad_kmalloc_safe_zero_size(); if ( size > 0x10000) __bad_kmalloc_safe_too_large_size(); if (__builtin_constant_p(nmemb) && nmemb > 0x20000/size) __bad_kmalloc_safe_too_large(); if (nmemb <= 0x20000/size) return kmalloc(nmemb*size,flags); else return 0; } -- http://dmoz.org/profiles/pollei.html http://sourceforge.net/users/stephen_pollei/ http://www.orkut.com/Profile.aspx?uid=2455954990164098214 http://stephen_pollei.home.comcast.net/