From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1946268AbcHRLxI (ORCPT ); Thu, 18 Aug 2016 07:53:08 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:36781 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753627AbcHRLxF (ORCPT ); Thu, 18 Aug 2016 07:53:05 -0400 Date: Thu, 18 Aug 2016 13:53:00 +0200 From: LABBE Corentin To: PrasannaKumar Muralidharan Cc: mpm@selenic.com, Herbert Xu , robh+dt@kernel.org, mark.rutland@arm.com, Ralf Baechle , davem@davemloft.net, geert@linux-m68k.org, Andrew Morton , Greg KH , mchehab@kernel.org, Guenter Roeck , boris.brezillon@free-electrons.com, harvey.hunt@imgtec.com, alex.smith@imgtec.com, Daniel Thompson , Lee Jones , Florian Fainelli , kieran@ksquared.org.uk, Krzysztof Kozlowski , joshua.henderson@microchip.com, yendapally.reddy@broadcom.com, narmstrong@baylibre.com, wangkefeng.wang@huawei.com, Christian Lamparter , =?iso-8859-1?Q?=C1lvaro_Fern=E1ndez?= Rojas , Linus Walleij , pankaj.dev@st.com, Mathieu Poirier , linux-crypto@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@linux-mips.org Subject: Re: [PATCH] Add Ingenic JZ4780 hardware RNG driver Message-ID: <20160818115300.GA6621@Red> References: <1471448151-20850-1-git-send-email-prasannatsmkumar@gmail.com> <92a00062-9a87-0053-2c99-17bd1a304a4a@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Aug 18, 2016 at 10:44:18AM +0530, PrasannaKumar Muralidharan wrote: > >> +static int jz4780_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) > >> +{ > >> + struct jz4780_rng *jz4780_rng = container_of(rng, struct jz4780_rng, > >> + rng); > >> + u32 *data = buf; > >> + *data = jz4780_rng_readl(jz4780_rng, REG_RNG_DATA); > >> + return 4; > >> +} > > > > If max is less than 4, its bad > > Data will be 4 bytes. > No, according to comment in include/linux/hw_random.h "drivers can fill up to max bytes of data" So you cannot write more than max bytes without risking buffer overflow. And if max > 4, hwrng client need to recall your read function. The better example I found is tpm_get_random() in drivers/char/tpm/tpm-interface.c for handling both problem. Regards