Print this page
2602 mdb ::sockparams SEGV
2602 mdb ::sockparams SEGV

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/mdb/common/modules/sockfs/sockfs.c
          +++ new/usr/src/cmd/mdb/common/modules/sockfs/sockfs.c
↓ open down ↓ 58 lines elided ↑ open up ↑
  59   59   *
  60   60   * If no address is given then the default is to print all sockparams on the
  61   61   * global list (i.e., installed with soconfig(1)). To also print the ephemeral
  62   62   * entries the '-e' flag should be used. Only ephemeral entries can be printed
  63   63   * by specifying the '-E' flag.
  64   64   */
  65   65  static int
  66   66  sockparams_prt(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
  67   67  {
  68   68          struct sockparams sp;
       69 +        char strdev[MAXPATHLEN];
       70 +        char sockmod[MODMAXNAMELEN];
  69   71  
  70   72          if ((flags & DCMD_ADDRSPEC) == 0) {
  71   73                  uint_t opt_e = 0;
  72   74                  uint_t opt_E = 0;
  73   75  
  74   76                  /*
  75   77                   * Determine what lists should be printed
  76   78                   */
  77   79                  if (mdb_getopts(argc, argv,
  78   80                      'e', MDB_OPT_SETBITS, 1, &opt_e,
↓ open down ↓ 26 lines elided ↑ open up ↑
 105  107                  mdb_printf("%-?s %3s %3s %3s %15s %15s %6s %6s\n",
 106  108                      "ADDR", "FAM", "TYP", "PRO", "STRDEV", "SOCKMOD", "REFS",
 107  109                      "FLGS");
 108  110          }
 109  111  
 110  112          if (mdb_vread(&sp, sizeof (sp), addr) == -1) {
 111  113                  mdb_warn("failed to read sockparams at %0?p", addr);
 112  114                  return (DCMD_ERR);
 113  115          }
 114  116  
      117 +        if ((sp.sp_sdev_info.sd_devpath == NULL) || 
      118 +            (mdb_readstr(strdev, sizeof (strdev), 
      119 +             (uintptr_t)sp.sp_sdev_info.sd_devpath) <= 0))
      120 +                strcpy(strdev, "-");
      121 +        if (mdb_readstr(sockmod, sizeof (sockmod), 
      122 +            (uintptr_t)sp.sp_smod_name) <= 0)
      123 +                strcpy(sockmod, "");
      124 +
 115  125          mdb_printf("%0?p %3u %3u %3u %15s %15s %6u %#6x\n",
 116  126              addr,
 117  127              sp.sp_family, sp.sp_type, sp.sp_protocol,
 118      -            (sp.sp_sdev_info.sd_devpath != 0) ?
 119      -            sp.sp_sdev_info.sd_devpath : "-",
 120      -            sp.sp_smod_name, sp.sp_refcnt,
      128 +            strdev, sockmod, sp.sp_refcnt,
 121  129              sp.sp_flags);
 122  130  
 123  131  
 124  132          return (DCMD_OK);
 125  133  }
 126  134  
 127  135  /*
 128  136   * Help function
 129  137   */
 130  138  void
↓ open down ↓ 24 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX