Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
From: Fredrik_Oestman@mentor.com (Oestman, Fredrik)
Subject: [lttng-dev] UST check pointer/de-reference order
Date: Tue, 5 Jun 2012 08:19:29 +0000	[thread overview]
Message-ID: <524C960C5DFC794E82BE548D825F05CF28344978@EU-MBX-01.mgc.mentorg.com> (raw)
In-Reply-To: <524C960C5DFC794E82BE548D825F05CF28344927@EU-MBX-01.mgc.mentorg.com>

I stumbled across some code where pointers are de-referenced and then checked for NULL.

Cheers,

Fredrik ?stman


diff --git a/liblttng-ust-ctl/ustctl.c b/liblttng-ust-ctl/ustctl.c
index 9789413..80aed04 100644
--- a/liblttng-ust-ctl/ustctl.c
+++ b/liblttng-ust-ctl/ustctl.c
@@ -732,7 +732,7 @@ void ustctl_unmap_channel(struct lttng_ust_shm_handle *handle)
 struct lttng_ust_lib_ring_buffer *ustctl_open_stream_read(struct lttng_ust_shm_handle *handle,
 	int cpu)
 {
-	struct channel *chan = handle->shadow_chan;
+	struct channel *chan;
 	int *shm_fd, *wait_fd;
 	uint64_t *memory_map_size;
 	struct lttng_ust_lib_ring_buffer *buf;
@@ -741,6 +741,7 @@ struct lttng_ust_lib_ring_buffer *ustctl_open_stream_read(struct lttng_ust_shm_h
 	if (!handle)
 		return NULL;
 
+	chan = handle->shadow_chan;
 	buf = channel_get_ring_buffer(&chan->backend.config,
 		chan, cpu, handle, &shm_fd, &wait_fd, &memory_map_size);
 	if (!buf)
@@ -784,11 +785,12 @@ int ustctl_get_mmap_len(struct lttng_ust_shm_handle *handle,
 		unsigned long *len)
 {
 	unsigned long mmap_buf_len;
-	struct channel *chan = handle->shadow_chan;
+	struct channel *chan;
 
 	if (!handle || !buf || !len)
 		return -EINVAL;
 
+	chan = handle->shadow_chan;
 	if (chan->backend.config.output != RING_BUFFER_MMAP)
 		return -EINVAL;
 	mmap_buf_len = chan->backend.buf_size;
@@ -805,11 +807,12 @@ int ustctl_get_max_subbuf_size(struct lttng_ust_shm_handle *handle,
 		struct lttng_ust_lib_ring_buffer *buf,
 		unsigned long *len)
 {
-	struct channel *chan = handle->shadow_chan;
+	struct channel *chan;
 
 	if (!handle || !buf || !len)
 		return -EINVAL;
 
+	chan = handle->shadow_chan;
 	*len = chan->backend.subbuf_size;
 	return 0;
 }
@@ -823,12 +826,13 @@ int ustctl_get_max_subbuf_size(struct lttng_ust_shm_handle *handle,
 int ustctl_get_mmap_read_offset(struct lttng_ust_shm_handle *handle,
 		struct lttng_ust_lib_ring_buffer *buf, unsigned long *off)
 {
-	struct channel *chan = handle->shadow_chan;
+	struct channel *chan;
 	unsigned long sb_bindex;
 
 	if (!handle || !buf || !off)
 		return -EINVAL;
 
+	chan = handle->shadow_chan;
 	if (chan->backend.config.output != RING_BUFFER_MMAP)
 		return -EINVAL;
 	sb_bindex = subbuffer_id_get_index(&chan->backend.config,
@@ -841,11 +845,12 @@ int ustctl_get_mmap_read_offset(struct lttng_ust_shm_handle *handle,
 int ustctl_get_subbuf_size(struct lttng_ust_shm_handle *handle,
 		struct lttng_ust_lib_ring_buffer *buf, unsigned long *len)
 {
-	struct channel *chan = handle->shadow_chan;
+	struct channel *chan;
 
 	if (!handle || !buf || !len)
 		return -EINVAL;
 
+	chan = handle->shadow_chan;
 	*len = lib_ring_buffer_get_read_data_size(&chan->backend.config, buf,
 		handle);
 	return 0;
@@ -855,11 +860,12 @@ int ustctl_get_subbuf_size(struct lttng_ust_shm_handle *handle,
 int ustctl_get_padded_subbuf_size(struct lttng_ust_shm_handle *handle,
 		struct lttng_ust_lib_ring_buffer *buf, unsigned long *len)
 {
-	struct channel *chan = handle->shadow_chan;
+	struct channel *chan;
 
 	if (!handle || !buf || !len)
 		return -EINVAL;
 
+	chan = handle->shadow_chan;
 	*len = lib_ring_buffer_get_read_data_size(&chan->backend.config, buf,
 		handle);
 	*len = PAGE_ALIGN(*len);



  reply	other threads:[~2012-06-05  8:19 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CABnnsm_MJHGq_TcjZj5_4_2TmTDhQUPGeJAyd3HYn6V7bPFQaw@mail.gmail.com>
     [not found] ` <524C960C5DFC794E82BE548D825F05CF283435F8@EU-MBX-01.mgc.mentorg.com>
2012-06-04  3:22   ` [lttng-dev] Displaying graphical results tchak adim
2012-06-04 20:57     ` tchak adim
2012-06-05  7:06       ` Oestman, Fredrik
2012-06-05  8:19         ` Oestman, Fredrik [this message]
2012-06-05 15:19           ` [lttng-dev] UST check pointer/de-reference order Mathieu Desnoyers
2012-06-05  9:27       ` [lttng-dev] Displaying graphical results Francis Giraldeau
2012-06-05 13:40       ` Bernd Hufmann
2012-06-05 16:56         ` tchak adim
     [not found] ` <4FC3CBF6.1060608@polymtl.ca>
2012-06-05 17:02   ` Brosseau, Yannick
2012-06-05 17:12     ` tchak adim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=524C960C5DFC794E82BE548D825F05CF28344978@EU-MBX-01.mgc.mentorg.com \
    --to=fredrik_oestman@mentor.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox