Index: sys/cam/cam_periph.c =================================================================== --- sys/cam/cam_periph.c +++ sys/cam/cam_periph.c @@ -770,6 +770,7 @@ if (periph->flags & CAM_PERIPH_NEW_DEV_FOUND) { union ccb ccb; + int arglen; void *arg; memset(&ccb, 0, sizeof(ccb)); @@ -779,17 +780,20 @@ xpt_setup_ccb(&ccb.ccb_h, periph->path, CAM_PRIORITY_NORMAL); xpt_action(&ccb); arg = &ccb; + arglen = sizeof(ccb.cgd); break; case AC_PATH_REGISTERED: xpt_path_inq(&ccb.cpi, periph->path); arg = &ccb; + arglen = sizeof(ccb.cpi); break; default: arg = NULL; + arglen = 0; break; } - periph->deferred_callback(NULL, periph->deferred_ac, - periph->path, arg); + xpt_deferred_callback(periph->deferred_callback, + periph->deferred_ac, periph->path, arg, arglen); } xpt_free_path(periph->path); free(periph, M_CAMPERIPH);