From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jTh6M-0000lN-C2 for barebox@lists.infradead.org; Wed, 29 Apr 2020 07:25:51 +0000 Date: Wed, 29 Apr 2020 09:25:48 +0200 From: Sascha Hauer Message-ID: <20200429072548.GD5877@pengutronix.de> References: <20200429064014.26584-1-a.fatoum@pengutronix.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200429064014.26584-1-a.fatoum@pengutronix.de> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [RFC PATCH] ddr: fsl: fix null pointer dereference handling DDR4 memories To: Ahmad Fatoum Cc: barebox@lists.infradead.org On Wed, Apr 29, 2020 at 08:40:14AM +0200, Ahmad Fatoum wrote: > cppcheck reports: > > drivers/ddr/fsl/util.c:42:27: error: Null pointer dereference: > c [ctunullpointer] > unsigned int data_rate = c->ddr_freq; > ^ > drivers/ddr/fsl/ctrl_regs.c:1114:55: note: Calling function > get_memory_clk_period_ps, 1st argument is null > const unsigned int mclk_ps = get_memory_clk_period_ps(0); > > Because get_memory_clk_period_ps expects a valid pointer, but is instead > passed NULL. Fix this by passing along the DDR controller handle like all > other calls to the function do. This is untested. This is obviously correct, so applied. > > Signed-off-by: Ahmad Fatoum > --- > drivers/ddr/fsl/ctrl_regs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/ddr/fsl/ctrl_regs.c b/drivers/ddr/fsl/ctrl_regs.c > index 4957320d600c..eb99e0ea21e7 100644 > --- a/drivers/ddr/fsl/ctrl_regs.c > +++ b/drivers/ddr/fsl/ctrl_regs.c > @@ -1111,7 +1111,7 @@ static void set_ddr_sdram_mode_9(struct fsl_ddr_controller *c, > unsigned short esdmode5; /* Extended SDRAM mode 5 */ > int rtt_park = 0; > bool four_cs = false; > - const unsigned int mclk_ps = get_memory_clk_period_ps(0); > + const unsigned int mclk_ps = get_memory_clk_period_ps(c); mclk_ps is only used under certain circumstances. It seems on my layersape board it is unused. This NULL pointer deref doesn't trigger there. Sascha -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox