diff --git a/kernel/mempool.c b/kernel/mempool.c
index 3817e4e..e82be2b 100644
--- a/kernel/mempool.c
+++ b/kernel/mempool.c
@@ -192,7 +192,7 @@
 	}
 
 	ret = k_malloc(bounds);
-	if (ret) {
+	if (ret != NULL) {
 		(void)memset(ret, 0, bounds);
 	}
 	return ret;
diff --git a/kernel/msg_q.c b/kernel/msg_q.c
index 33755d6..4cbf0a3 100644
--- a/kernel/msg_q.c
+++ b/kernel/msg_q.c
@@ -202,7 +202,7 @@
 
 		/* handle first thread waiting to write (if any) */
 		pending_thread = _unpend_first_thread(&q->wait_q);
-		if (pending_thread) {
+		if (pending_thread != NULL) {
 			/* add thread's message to queue */
 			(void)memcpy(q->write_ptr, pending_thread->base.swap_data,
 			       q->msg_size);
diff --git a/kernel/mutex.c b/kernel/mutex.c
index e3f3584..64b9bd7 100644
--- a/kernel/mutex.c
+++ b/kernel/mutex.c
@@ -241,7 +241,7 @@
 	K_DEBUG("new owner of mutex %p: %p (prio: %d)\n",
 		mutex, new_owner, new_owner ? new_owner->base.prio : -1000);
 
-	if (new_owner) {
+	if (new_owner != NULL) {
 		_ready_thread(new_owner);
 
 		irq_unlock(key);
diff --git a/kernel/pipes.c b/kernel/pipes.c
index 8e52bce..f56fc33 100644
--- a/kernel/pipes.c
+++ b/kernel/pipes.c
@@ -499,7 +499,7 @@
 	 * Copy any data to the reader that we left on the wait_q.
 	 * It is possible no data will be copied.
 	 */
-	if (reader) {
+	if (reader != NULL) {
 		desc = (struct k_pipe_desc *)reader->base.swap_data;
 		bytes_copied = pipe_xfer(desc->buffer, desc->bytes_to_xfer,
 					  data + num_bytes_written,
@@ -649,7 +649,7 @@
 		thread = (struct k_thread *)sys_dlist_get(&xfer_list);
 	}
 
-	if (writer && (num_bytes_read < bytes_to_read)) {
+	if ((writer != NULL) && (num_bytes_read < bytes_to_read)) {
 		desc = (struct k_pipe_desc *)writer->base.swap_data;
 		bytes_copied = pipe_xfer(data + num_bytes_read,
 					  bytes_to_read - num_bytes_read,
@@ -679,7 +679,7 @@
 		thread = (struct k_thread *)sys_dlist_get(&xfer_list);
 	}
 
-	if (writer) {
+	if (writer != NULL) {
 		desc = (struct k_pipe_desc *)writer->base.swap_data;
 		bytes_copied = pipe_buffer_put(pipe, desc->buffer,
 						desc->bytes_to_xfer);
diff --git a/kernel/poll.c b/kernel/poll.c
index 73149d6..81811a7 100644
--- a/kernel/poll.c
+++ b/kernel/poll.c
@@ -80,8 +80,9 @@
 	struct k_poll_event *pending;
 
 	pending = (struct k_poll_event *)sys_dlist_peek_tail(events);
-	if (!pending || _is_t1_higher_prio_than_t2(pending->poller->thread,
-						   poller->thread)) {
+	if ((pending == NULL) ||
+		_is_t1_higher_prio_than_t2(pending->poller->thread,
+		poller->thread)) {
 		sys_dlist_append(events, &event->_node);
 		return;
 	}
@@ -358,7 +359,7 @@
 	struct k_poll_event *poll_event;
 
 	poll_event = (struct k_poll_event *)sys_dlist_get(events);
-	if (poll_event) {
+	if (poll_event != NULL) {
 		(void) signal_poll_event(poll_event, state);
 	}
 }
@@ -409,7 +410,7 @@
 	signal->signaled = 1;
 
 	poll_event = (struct k_poll_event *)sys_dlist_get(&signal->poll_events);
-	if (!poll_event) {
+	if (poll_event == NULL) {
 		irq_unlock(key);
 		return 0;
 	}
diff --git a/kernel/queue.c b/kernel/queue.c
index f9f7931..a493a6b 100644
--- a/kernel/queue.c
+++ b/kernel/queue.c
@@ -127,7 +127,7 @@
 
 	first_pending_thread = _unpend_first_thread(&queue->wait_q);
 
-	if (first_pending_thread) {
+	if (first_pending_thread != NULL) {
 		prepare_thread_to_run(first_pending_thread, NULL);
 	}
 #else
@@ -151,7 +151,7 @@
 
 	first_pending_thread = _unpend_first_thread(&queue->wait_q);
 
-	if (first_pending_thread) {
+	if (first_pending_thread != NULL) {
 		prepare_thread_to_run(first_pending_thread, data);
 		_reschedule(key);
 		return 0;
@@ -163,7 +163,7 @@
 		struct alloc_node *anode;
 
 		anode = z_thread_malloc(sizeof(*anode));
-		if (!anode) {
+		if (anode == NULL) {
 			return -ENOMEM;
 		}
 		anode->data = data;
@@ -242,7 +242,7 @@
 		head = *(void **)head;
 	}
 
-	if (head) {
+	if (head != NULL) {
 		sys_sflist_append_list(&queue->data_q, head, tail);
 	}
 
@@ -303,7 +303,7 @@
 		val = z_queue_node_peek(sys_sflist_get(&queue->data_q), true);
 		irq_unlock(key);
 
-		if (!val && timeout != K_FOREVER) {
+		if ((val == NULL) && (timeout != K_FOREVER)) {
 			elapsed = k_uptime_get_32() - start;
 			done = elapsed > timeout;
 		}
diff --git a/kernel/sched.c b/kernel/sched.c
index ed8dd02..37d4cfc 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -169,7 +169,7 @@
 
 	/* Choose the best thread that is not current */
 	struct k_thread *th = _priq_run_best(&_kernel.ready_q.runq);
-	if (!th) {
+	if (th == NULL) {
 		th = _current_cpu->idle_thread;
 	}
 
@@ -269,7 +269,7 @@
 		irq_unlock(key);
 	}
 
-	if (wait_q) {
+	if (wait_q != NULL) {
 #ifdef CONFIG_WAITQ_SCALABLE
 		thread->base.pended_on = wait_q;
 #endif
@@ -333,7 +333,7 @@
 {
 	struct k_thread *t = _unpend1_no_timeout(wait_q);
 
-	if (t) {
+	if (t != NULL) {
 		(void)_abort_thread_timeout(t);
 	}
 
@@ -622,7 +622,7 @@
 	LOCKED(&sched_lock) {
 		struct k_thread *next = _priq_run_best(&_kernel.ready_q.runq);
 
-		if (next) {
+		if (next != NULL) {
 			ret = thread->base.prio == next->base.prio;
 		}
 	}
diff --git a/kernel/sys_clock.c b/kernel/sys_clock.c
index fc2bef9..6d9c725 100644
--- a/kernel/sys_clock.c
+++ b/kernel/sys_clock.c
@@ -183,7 +183,7 @@
 	K_DEBUG("head: %p, delta: %d\n",
 		timeout, timeout ? timeout->delta_ticks_from_prev : -2112);
 
-	if (!next) {
+	if (next == NULL) {
 		irq_unlock(key);
 		return;
 	}
diff --git a/kernel/timer.c b/kernel/timer.c
index a4dfc4b..a67edbe 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -70,7 +70,7 @@
 
 	thread = _waitq_head(&timer->wait_q);
 
-	if (!thread) {
+	if (thread == NULL) {
 		return;
 	}
 
@@ -163,7 +163,7 @@
 	key = irq_lock();
 	struct k_thread *pending_thread = _unpend1_no_timeout(&timer->wait_q);
 
-	if (pending_thread) {
+	if (pending_thread != NULL) {
 		_ready_thread(pending_thread);
 	}
 
diff --git a/kernel/userspace.c b/kernel/userspace.c
index e4339a1..cd8f729 100644
--- a/kernel/userspace.c
+++ b/kernel/userspace.c
@@ -220,7 +220,7 @@
 		 "bad object type requested");
 
 	dyn_obj = z_thread_malloc(sizeof(*dyn_obj) + obj_size_get(otype));
-	if (!dyn_obj) {
+	if (dyn_obj == NULL) {
 		SYS_LOG_WRN("could not allocate kernel object");
 		return NULL;
 	}
@@ -265,7 +265,7 @@
 
 	key = irq_lock();
 	dyn_obj = dyn_object_find(obj);
-	if (dyn_obj) {
+	if (dyn_obj != NULL) {
 		rb_remove(&obj_rb_tree, &dyn_obj->node);
 		sys_dlist_remove(&dyn_obj->obj_list);
 
@@ -275,7 +275,7 @@
 	}
 	irq_unlock(key);
 
-	if (dyn_obj) {
+	if (dyn_obj != NULL) {
 		k_free(dyn_obj);
 	}
 }
@@ -286,11 +286,11 @@
 
 	ret = _k_object_gperf_find(obj);
 
-	if (!ret) {
+	if (ret == NULL) {
 		struct dyn_obj *dyn_obj;
 
 		dyn_obj = dyn_object_find(obj);
-		if (dyn_obj) {
+		if (dyn_obj != NULL) {
 			ret = &dyn_obj->kobj;
 		}
 	}
@@ -319,7 +319,7 @@
 
 	ko = _k_object_find(t);
 
-	if (!ko) {
+	if (ko == NULL) {
 		return -1;
 	}
 
@@ -482,7 +482,7 @@
 {
 	struct _k_object *ko = _k_object_find(object);
 
-	if (ko) {
+	if (ko != NULL) {
 		_thread_perms_set(ko, thread);
 	}
 }
@@ -491,7 +491,7 @@
 {
 	struct _k_object *ko = _k_object_find(object);
 
-	if (ko) {
+	if (ko != NULL) {
 		_thread_perms_clear(ko, thread);
 	}
 }
@@ -505,7 +505,7 @@
 {
 	struct _k_object *ko = _k_object_find(object);
 
-	if (ko) {
+	if (ko != NULL) {
 		ko->flags |= K_OBJ_FLAG_PUBLIC;
 	}
 }
@@ -553,7 +553,7 @@
 	 */
 
 	ko = _k_object_find(object);
-	if (!ko) {
+	if (ko == NULL) {
 		/* Supervisor threads can ignore rules about kernel objects
 		 * and may declare them on stacks, etc. Such objects will never
 		 * be usable from userspace, but we shouldn't explode.
@@ -569,7 +569,7 @@
 {
 	struct _k_object *ko = _k_object_find(object);
 
-	if (ko) {
+	if (ko != NULL) {
 		(void)memset(ko->perms, 0, sizeof(ko->perms));
 		_thread_perms_set(ko, k_current_get());
 		ko->flags |= K_OBJ_FLAG_INITIALIZED;
@@ -582,7 +582,7 @@
 
 	/* See comments in _k_object_init() */
 	ko = _k_object_find(object);
-	if (!ko) {
+	if (ko == NULL) {
 		return;
 	}
 
@@ -605,7 +605,7 @@
 	}
 
 	dst = z_thread_malloc(size);
-	if (!dst) {
+	if (dst == NULL) {
 		printk("out of thread resource pool memory (%zu)", size);
 		goto out_err;
 	}
diff --git a/kernel/work_q.c b/kernel/work_q.c
index d1ff03b..42de0c7 100644
--- a/kernel/work_q.c
+++ b/kernel/work_q.c
@@ -27,7 +27,7 @@
 		k_work_handler_t handler;
 
 		work = k_queue_get(&work_q->queue, K_FOREVER);
-		if (!work) {
+		if (work == NULL) {
 			continue;
 		}
 
diff --git a/lib/libc/minimal/source/stdlib/malloc.c b/lib/libc/minimal/source/stdlib/malloc.c
index 80acb94..a8d63b7 100644
--- a/lib/libc/minimal/source/stdlib/malloc.c
+++ b/lib/libc/minimal/source/stdlib/malloc.c
@@ -22,7 +22,7 @@
 	void *ret;
 
 	ret = sys_mem_pool_alloc(&z_malloc_mem_pool, size);
-	if (!ret) {
+	if (ret == NULL) {
 		errno = ENOMEM;
 	}
 
@@ -82,7 +82,7 @@
 
 	ret = malloc(size);
 
-	if (ret) {
+	if (ret != NULL) {
 		(void)memset(ret, 0, size);
 	}
 
@@ -120,7 +120,7 @@
 	}
 
 	new_ptr = malloc(requested_size);
-	if (!new_ptr) {
+	if (new_ptr == NULL) {
 		return NULL;
 	}
 
diff --git a/lib/libc/minimal/source/stdlib/strtol.c b/lib/libc/minimal/source/stdlib/strtol.c
index 9617c2b..c54b17c 100644
--- a/lib/libc/minimal/source/stdlib/strtol.c
+++ b/lib/libc/minimal/source/stdlib/strtol.c
@@ -113,7 +113,7 @@
 		errno = ERANGE;
 	} else if (neg)
 		acc = -acc;
-	if (endptr != 0)
+	if (endptr != NULL)
 		*endptr = (char *)(any ? s - 1 : nptr);
 	return acc;
 }
diff --git a/lib/libc/minimal/source/stdlib/strtoul.c b/lib/libc/minimal/source/stdlib/strtoul.c
index 77610d7..a5934ac 100644
--- a/lib/libc/minimal/source/stdlib/strtoul.c
+++ b/lib/libc/minimal/source/stdlib/strtoul.c
@@ -92,7 +92,7 @@
 		errno = ERANGE;
 	} else if (neg)
 		acc = -acc;
-	if (endptr != 0)
+	if (endptr != NULL)
 		*endptr = (char *)(any ? s - 1 : nptr);
 	return acc;
 }
diff --git a/lib/mempool/mempool.c b/lib/mempool/mempool.c
index 006d2ca..b3a89b8 100644
--- a/lib/mempool/mempool.c
+++ b/lib/mempool/mempool.c
@@ -147,7 +147,7 @@
 	int key = pool_irq_lock(p);
 
 	block = sys_dlist_get(&p->levels[l].free_list);
-	if (block) {
+	if (block != NULL) {
 		clear_free_bit(p, l, block_num(p, block, lsz));
 	}
 	pool_irq_unlock(p, key);
@@ -258,7 +258,7 @@
 	/* Iteratively break the smallest enclosing block... */
 	data = block_alloc(p, free_l, lsizes[free_l]);
 
-	if (!data) {
+	if (data == NULL) {
 		/* This can happen if we race with another allocator.
 		 * It's OK, just back out and the timeout code will
 		 * retry.  Note mild overloading: -EAGAIN isn't for
@@ -337,7 +337,7 @@
 	struct sys_mem_pool_block *blk;
 	struct sys_mem_pool *p;
 
-	if (!ptr) {
+	if (ptr == NULL) {
 		return;
 	}
 
diff --git a/lib/rbtree/rb.c b/lib/rbtree/rb.c
index 85f4507..762ca46 100644
--- a/lib/rbtree/rb.c
+++ b/lib/rbtree/rb.c
@@ -172,7 +172,7 @@
 		int side = get_side(grandparent, parent);
 		struct rbnode *aunt = get_child(grandparent, !side);
 
-		if (aunt && is_red(aunt)) {
+		if ((aunt != NULL) && is_red(aunt)) {
 			set_color(grandparent, RED);
 			set_color(parent, BLACK);
 			set_color(aunt, BLACK);
@@ -431,7 +431,7 @@
 
 	struct rbnode *child = get_child(node, 0);
 
-	if (!child) {
+	if (child == NULL) {
 		child = get_child(node, 1);
 	}
 
@@ -481,7 +481,7 @@
 
 void _rb_walk(struct rbnode *node, rb_visit_t visit_fn, void *cookie)
 {
-	if (node) {
+	if (node != NULL) {
 		_rb_walk(get_child(node, 0), visit_fn, cookie);
 		visit_fn(node, cookie);
 		_rb_walk(get_child(node, 1), visit_fn, cookie);
@@ -557,7 +557,7 @@
 	 * it's right subtree if it has a right child
 	 */
 	n = get_child(f->stack[f->top], 1);
-	if (n) {
+	if (n != NULL) {
 		return stack_left_limb(n, f);
 	}
 
diff --git a/scripts/gen_kobject_list.py b/scripts/gen_kobject_list.py
index e0384c9..0bc0cdb 100755
--- a/scripts/gen_kobject_list.py
+++ b/scripts/gen_kobject_list.py
@@ -85,7 +85,7 @@
     int i;
 
     for (i = MIN_HASH_VALUE; i <= MAX_HASH_VALUE; i++) {
-        if (wordlist[i].name) {
+        if (wordlist[i].name != NULL) {
             func(&wordlist[i], context);
         }
     }
