Fix OpenSSL NULL pointer deference vulnerability. [SA-14:09] Add pkg bootstrapping, configuration and public keys. [EN-14:03] Improve build repeatability for kldxref(8). [EN-14:04] Fix data corruption with ciss(4). [EN-14:05]
		
			
				
	
	
		
			65 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Index: sys/dev/ciss/ciss.c
 | |
| ===================================================================
 | |
| --- sys/dev/ciss/ciss.c	(revision 264510)
 | |
| +++ sys/dev/ciss/ciss.c	(revision 264511)
 | |
| @@ -180,8 +180,6 @@
 | |
|  static void	ciss_cam_poll(struct cam_sim *sim);
 | |
|  static void	ciss_cam_complete(struct ciss_request *cr);
 | |
|  static void	ciss_cam_complete_fixup(struct ciss_softc *sc, struct ccb_scsiio *csio);
 | |
| -static struct cam_periph *ciss_find_periph(struct ciss_softc *sc,
 | |
| -					   int bus, int target);
 | |
|  static int	ciss_name_device(struct ciss_softc *sc, int bus, int target);
 | |
|  
 | |
|  /* periodic status monitoring */
 | |
| @@ -3398,27 +3396,6 @@
 | |
|  
 | |
|  
 | |
|  /********************************************************************************
 | |
| - * Find a peripheral attached at (target)
 | |
| - */
 | |
| -static struct cam_periph *
 | |
| -ciss_find_periph(struct ciss_softc *sc, int bus, int target)
 | |
| -{
 | |
| -    struct cam_periph	*periph;
 | |
| -    struct cam_path	*path;
 | |
| -    int			status;
 | |
| -
 | |
| -    status = xpt_create_path(&path, NULL, cam_sim_path(sc->ciss_cam_sim[bus]),
 | |
| -			     target, 0);
 | |
| -    if (status == CAM_REQ_CMP) {
 | |
| -	periph = cam_periph_find(path, NULL);
 | |
| -	xpt_free_path(path);
 | |
| -    } else {
 | |
| -	periph = NULL;
 | |
| -    }
 | |
| -    return(periph);
 | |
| -}
 | |
| -
 | |
| -/********************************************************************************
 | |
|   * Name the device at (target)
 | |
|   *
 | |
|   * XXX is this strictly correct?
 | |
| @@ -3427,12 +3404,22 @@
 | |
|  ciss_name_device(struct ciss_softc *sc, int bus, int target)
 | |
|  {
 | |
|      struct cam_periph	*periph;
 | |
| +    struct cam_path	*path;
 | |
| +    int			status;
 | |
|  
 | |
|      if (CISS_IS_PHYSICAL(bus))
 | |
|  	return (0);
 | |
| -    if ((periph = ciss_find_periph(sc, bus, target)) != NULL) {
 | |
| +
 | |
| +    status = xpt_create_path(&path, NULL, cam_sim_path(sc->ciss_cam_sim[bus]),
 | |
| +			     target, 0);
 | |
| +
 | |
| +    if (status == CAM_REQ_CMP) {
 | |
| +    	mtx_lock(&sc->ciss_mtx);
 | |
| +	periph = cam_periph_find(path, NULL);
 | |
|  	sprintf(sc->ciss_logical[bus][target].cl_name, "%s%d",
 | |
|  		periph->periph_name, periph->unit_number);
 | |
| +    	mtx_unlock(&sc->ciss_mtx);
 | |
| +	xpt_free_path(path);
 | |
|  	return(0);
 | |
|      }
 | |
|      sc->ciss_logical[bus][target].cl_name[0] = 0;
 |