Print this page
2602 mdb ::sockparams SEGV
2602 mdb ::sockparams SEGV
*** 64,73 ****
--- 64,75 ----
*/
static int
sockparams_prt(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
{
struct sockparams sp;
+ char strdev[MAXPATHLEN];
+ char sockmod[MODMAXNAMELEN];
if ((flags & DCMD_ADDRSPEC) == 0) {
uint_t opt_e = 0;
uint_t opt_E = 0;
*** 110,125 ****
if (mdb_vread(&sp, sizeof (sp), addr) == -1) {
mdb_warn("failed to read sockparams at %0?p", addr);
return (DCMD_ERR);
}
mdb_printf("%0?p %3u %3u %3u %15s %15s %6u %#6x\n",
addr,
sp.sp_family, sp.sp_type, sp.sp_protocol,
! (sp.sp_sdev_info.sd_devpath != 0) ?
! sp.sp_sdev_info.sd_devpath : "-",
! sp.sp_smod_name, sp.sp_refcnt,
sp.sp_flags);
return (DCMD_OK);
}
--- 112,133 ----
if (mdb_vread(&sp, sizeof (sp), addr) == -1) {
mdb_warn("failed to read sockparams at %0?p", addr);
return (DCMD_ERR);
}
+ if ((sp.sp_sdev_info.sd_devpath == NULL) ||
+ (mdb_readstr(strdev, sizeof (strdev),
+ (uintptr_t)sp.sp_sdev_info.sd_devpath) <= 0))
+ strcpy(strdev, "-");
+ if (mdb_readstr(sockmod, sizeof (sockmod),
+ (uintptr_t)sp.sp_smod_name) <= 0)
+ strcpy(sockmod, "");
+
mdb_printf("%0?p %3u %3u %3u %15s %15s %6u %#6x\n",
addr,
sp.sp_family, sp.sp_type, sp.sp_protocol,
! strdev, sockmod, sp.sp_refcnt,
sp.sp_flags);
return (DCMD_OK);
}