As recorded in the Link, NULL pointer dereference happens when the
write_lat_log option is specified for the file operations IO engine.
This failure was caused by the commit
14d3134a5fc0 ("introduce the
log_issue_time option") which added the new field 'issue_time' to the
struct log_sample. To calculate the issue time, add_clat_sample() was
modified to refer to io_u->issue_time. However, the file operations IO
engine passes NULL as the io_u pointer. Hence the failure.
Fix this by skipping the io_u->issue_time reference when io_u is NULL.
Instead, set 0 as the issue time.
Link: https://lore.kernel.org/fio/0e2c84c9-f9e4-4073-a075-016393ca7bde@gmail.com/
Fixes:
14d3134a5fc0 ("introduce the log_issue_time option")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Link: https://lore.kernel.org/r/20240906023717.1464031-2-shinichiro.kawasaki@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
if (td->clat_log) {
struct log_sample sample = { sample_val(nsec), ddir, bs,
- offset, ioprio,
- ntime_since(&td->epoch, &io_u->issue_time) };
+ offset, ioprio, 0 };
+
+ if (io_u)
+ sample.issue_time =
+ ntime_since(&td->epoch, &io_u->issue_time);
add_log_sample(td, td->clat_log, &sample);
}