DF-2440 / fix.diff
--- a/sys/dev/disk/dm/delay/dm_target_delay.c +++ b/sys/dev/disk/dm/delay/dm_target_delay.c @@ -70,7 +70,7 @@ } dm_target_delay_config_t; static int _init(struct dm_delay_info*, char**, int); -static int _table(struct dm_delay_info*, char*); +static int _table(struct dm_delay_info*, char*, size_t); static void _strategy(struct dm_delay_info*, struct buf*); static __inline void _submit(struct dm_delay_info*, struct buf*); static void _submit_queue(struct dm_delay_info*, int); @@ -182,20 +182,20 @@ params = dm_alloc_string(DM_MAX_PARAMS_SIZE); p = params; - p += _table(&tdc->read, p); + p += _table(&tdc->read, p, DM_MAX_PARAMS_SIZE); if (tdc->argc == 6) { - p += ksnprintf(p, DM_MAX_PARAMS_SIZE, " "); - _table(&tdc->write, p); + p += ksnprintf(p, DM_MAX_PARAMS_SIZE - (p - params), " "); + p += _table(&tdc->write, p, DM_MAX_PARAMS_SIZE - (p - params)); } return params; } -static int _table(struct dm_delay_info *di, char *p) +static int _table(struct dm_delay_info *di, char *p, size_t limit) { int ret; - ret = ksnprintf(p, DM_MAX_PARAMS_SIZE, + ret = ksnprintf(p, limit, "%s %" PRIu64 " %d", di->pdev->udev_name, di->offset, di->delay); return ret; |