Fix: block instrumentation 4.14+ NULL pointer dereference
[lttng-modules.git] / instrumentation / events / lttng-module / block.h
index c43d747110e21b908bdb17d26b9502daf75a0f36..7692ccb6f57274b3735b86bc1706f3b13d2154e5 100644 (file)
@@ -611,7 +611,11 @@ LTTNG_TRACEPOINT_EVENT(block_bio_bounce,
        TP_ARGS(q, bio),
 
        TP_FIELDS(
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+               ctf_integer(dev_t, dev, bio_dev(bio))
+#else
                ctf_integer(dev_t, dev, bio->bi_bdev ? bio->bi_bdev->bd_dev : 0)
+#endif
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
                ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
                ctf_integer(unsigned int, nr_sector, bio_sectors(bio))
@@ -652,7 +656,11 @@ LTTNG_TRACEPOINT_EVENT(block_bio_complete,
 #endif
 
        TP_FIELDS(
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+               ctf_integer(dev_t, dev, bio_dev(bio))
+#else
                ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev)
+#endif
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
                ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
                ctf_integer(unsigned int, nr_sector, bio_sectors(bio))
@@ -682,7 +690,11 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_bio_merge,
        TP_ARGS(q, rq, bio),
 
        TP_FIELDS(
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+               ctf_integer(dev_t, dev, bio_dev(bio))
+#else
                ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev)
+#endif
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
                ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
                ctf_integer(unsigned int, nr_sector, bio_sectors(bio))
@@ -744,7 +756,11 @@ LTTNG_TRACEPOINT_EVENT(block_bio_queue,
        TP_ARGS(q, bio),
 
        TP_FIELDS(
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+               ctf_integer(dev_t, dev, bio_dev(bio))
+#else
                ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev)
+#endif
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
                ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
                ctf_integer(unsigned int, nr_sector, bio_sectors(bio))
@@ -831,7 +847,11 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_get_rq,
        TP_ARGS(q, bio, rw),
 
        TP_FIELDS(
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+               ctf_integer(dev_t, dev, bio ? bio_dev(bio) : 0)
+#else
                ctf_integer(dev_t, dev, bio ? bio->bi_bdev->bd_dev : 0)
+#endif
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
                ctf_integer(sector_t, sector, bio ? bio->bi_iter.bi_sector : 0)
                ctf_integer(unsigned int, nr_sector,
@@ -857,7 +877,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_get_rq,
 /**
  * block_getrq - get a free request entry in queue for block IO operations
  * @q: queue for operations
- * @bio: pending block IO operation
+ * @bio: pending block IO operation (can be %NULL)
  * @rw: low bit indicates a read (%0) or a write (%1)
  *
  * A request struct for queue @q has been allocated to handle the
@@ -873,7 +893,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_get_rq, block_getrq,
 /**
  * block_sleeprq - waiting to get a free request entry in queue for block IO operation
  * @q: queue for operation
- * @bio: pending block IO operation
+ * @bio: pending block IO operation (can be %NULL)
  * @rw: low bit indicates a read (%0) or a write (%1)
  *
  * In the case where a request struct cannot be provided for queue @q
@@ -992,7 +1012,11 @@ LTTNG_TRACEPOINT_EVENT(block_split,
        TP_ARGS(q, bio, new_sector),
 
        TP_FIELDS(
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+               ctf_integer(dev_t, dev, bio_dev(bio))
+#else
                ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev)
+#endif
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
                ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
                blk_rwbs_ctf_integer(unsigned int, rwbs,
@@ -1031,7 +1055,11 @@ LTTNG_TRACEPOINT_EVENT(block_remap,
        TP_ARGS(q, bio, dev, from),
 
        TP_FIELDS(
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+               ctf_integer(dev_t, dev, bio_dev(bio))
+#else
                ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev)
+#endif
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
                ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
                ctf_integer(unsigned int, nr_sector, bio_sectors(bio))
This page took 0.024342 seconds and 4 git commands to generate.