Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Feb 2017 18:32:53 +0000 (UTC)
From:      Toomas Soome <tsoome@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r313451 - head/sys/boot/common
Message-ID:  <201702081832.v18IWrIa001896@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tsoome
Date: Wed Feb  8 18:32:53 2017
New Revision: 313451
URL: https://svnweb.freebsd.org/changeset/base/313451

Log:
  loader: possible NULL pointer dereference in bcache.c
  
  Coverity detected the possible NULL pointer dereference case.
  Also updated comment as was suggested in illumos review.
  
  CID:		1371008
  Reported by:	Coverity
  Reviewed by:	allanjude
  Approved by:	allanjude (mentor)
  Differential Revision:	https://reviews.freebsd.org/D9496

Modified:
  head/sys/boot/common/bcache.c

Modified: head/sys/boot/common/bcache.c
==============================================================================
--- head/sys/boot/common/bcache.c	Wed Feb  8 18:32:35 2017	(r313450)
+++ head/sys/boot/common/bcache.c	Wed Feb  8 18:32:53 2017	(r313451)
@@ -224,13 +224,13 @@ read_strategy(void *devdata, int rw, dad
     caddr_t			p_buf;
     uint32_t			*marker;
 
-    marker = (uint32_t *)(bc->bcache_data + bc->bcache_nblks * bcache_blksize);
-
     if (bc == NULL) {
 	errno = ENODEV;
 	return (-1);
     }
 
+    marker = (uint32_t *)(bc->bcache_data + bc->bcache_nblks * bcache_blksize);
+
     if (rsize != NULL)
 	*rsize = 0;
 
@@ -290,10 +290,9 @@ read_strategy(void *devdata, int rw, dad
      * And secondly, this way we get the most conservative setup for the ra.
      *
      * The selection of multiple of 16 blocks (8KB) is quite arbitrary, however,
-     * we want to have the CD (2K) and the 4K disks to be covered.
-     * Also, as we have 32 blocks to be allocated as the fallback value in the
-     * bcache_allocate(), the 16 ra blocks will allow the read ahead
-     * to be used even with bcache this small.
+     * we want to cover CDs (2K) and 4K disks.
+     * bcache_allocate() will always fall back to a minimum of 32 blocks.
+     * Our choice of 16 read ahead blocks will always fit inside the bcache.
      */
 
     ra = bc->bcache_nblks - BHASH(bc, p_blk + p_size);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201702081832.v18IWrIa001896>