Print this page
5253 kmem_alloc/kmem_zalloc won't fail with KM_SLEEP
5254 getrbuf won't fail with KM_SLEEP

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/scsi/targets/ses_safte.c
          +++ new/usr/src/uts/common/io/scsi/targets/ses_safte.c
↓ open down ↓ 18 lines elided ↑ open up ↑
  19   19   *
  20   20   * CDDL HEADER END
  21   21   */
  22   22  /*
  23   23   * Enclosure Services Devices, SAF-TE Enclosure Routines
  24   24   *
  25   25   * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  26   26   * Use is subject to license terms.
  27   27   */
  28   28  
  29      -#pragma ident   "%Z%%M% %I%     %E% SMI"
  30      -
  31   29  #include <sys/modctl.h>
  32   30  #include <sys/file.h>
  33   31  #include <sys/scsi/scsi.h>
  34   32  #include <sys/stat.h>
  35   33  #include <sys/scsi/targets/sesio.h>
  36   34  #include <sys/scsi/targets/ses.h>
  37   35  
  38   36  
  39   37  static int set_objstat_sel(ses_softc_t *, ses_objarg *, int);
  40   38  static int wrbuf16(ses_softc_t *, uchar_t, uchar_t, uchar_t, uchar_t, int);
↓ open down ↓ 64 lines elided ↑ open up ↑
 105  103          Uscmd local, *lp = &local;
 106  104          char rqbuf[SENSE_LENGTH], *sdata;
 107  105          static char cdb[CDB_GROUP1] =
 108  106              { SCMD_READ_BUFFER, 1, SAFTE_RD_RDCFG, 0, 0, 0, 0, 0, SCRATCH, 0 };
 109  107  
 110  108          cfg = ssc->ses_private;
 111  109          if (cfg == NULL)
 112  110                  return (ENXIO);
 113  111  
 114  112          sdata = kmem_alloc(SCRATCH, KM_SLEEP);
 115      -        if (sdata == NULL)
 116      -                return (ENOMEM);
 117  113  
 118  114          lp->uscsi_flags = USCSI_READ|USCSI_RQENABLE;
 119  115          lp->uscsi_timeout = ses_io_time;
 120  116          lp->uscsi_cdb = cdb;
 121  117          lp->uscsi_bufaddr = sdata;
 122  118          lp->uscsi_buflen = SCRATCH;
 123  119          lp->uscsi_cdblen = sizeof (cdb);
 124  120          lp->uscsi_rqbuf = rqbuf;
 125  121          lp->uscsi_rqlen = sizeof (rqbuf);
 126  122  
↓ open down ↓ 46 lines elided ↑ open up ↑
 173  169                          kmem_free(ssc->ses_private, SAFTE_PRIVATE);
 174  170                          ssc->ses_private = NULL;
 175  171                  }
 176  172                  mutex_exit(&ssc->ses_devp->sd_mutex);
 177  173                  return (0);
 178  174          }
 179  175  
 180  176          mutex_enter(&ssc->ses_devp->sd_mutex);
 181  177          if (ssc->ses_private == NULL) {
 182  178                  ssc->ses_private = kmem_zalloc(SAFTE_PRIVATE, KM_SLEEP);
 183      -                if (ssc->ses_private == NULL) {
 184      -                        mutex_exit(&ssc->ses_devp->sd_mutex);
 185      -                        return (ENOMEM);
 186      -                }
 187  179          }
 188  180  
 189  181          ssc->ses_nobjects = 0;
 190  182          ssc->ses_encstat = 0;
 191  183          mutex_exit(&ssc->ses_devp->sd_mutex);
 192  184  
 193  185          if ((r = safte_getconfig(ssc)) != 0) {
 194  186                  return (r);
 195  187          }
 196  188  
↓ open down ↓ 982 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX