public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kdb: match return value to function signature
@ 2015-05-12 12:46 Nicholas Mc Guire
  2015-05-12 14:31 ` Daniel Thompson
  0 siblings, 1 reply; 3+ messages in thread
From: Nicholas Mc Guire @ 2015-05-12 12:46 UTC (permalink / raw)
  To: Jason Wessel; +Cc: kgdb-bugreport, linux-kernel, Nicholas Mc Guire

kdb_task_state_string() introduced in the initial commit 5d5314d6795f
("kdb: core for kgdb back end (1 of 2)") returns unsigned long (a bit
array of states) but intermediately it is being assigned to a long which
make static code checkers unhappy and also does not not help readability
(technically there is no reason to use a signed type here).

Type-checking coccinelle spatches are being used to locate type mismatches
between function signatures and return values in this case it produced:
./kernel/debug/kdb/kdb_support.c:611 WARNING: return of wrong type
                                 unsigned long != long

Patch was compile tested with x86_64_defconfig + CONFIG_KGDB=y,
CONFIG_KGDB_KDB=y

Patch is against 4.1-rc3 (localversion-next is -next-20150512)

Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
---
 kernel/debug/kdb/kdb_support.c |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

All (5) call-sites of kdb_task_state_string() were checked and all are
expecting an unsigned long as the function signature provides - so this
change should have no effect as automatic type conversion did not make
the signed type visible externally and internally the signed nature was
also not in use.

Doc fixup: long -> unsigned long only (and some reformatting this caused)

diff --git a/kernel/debug/kdb/kdb_support.c b/kernel/debug/kdb/kdb_support.c
index d35cc2d..0bb3b81 100644
--- a/kernel/debug/kdb/kdb_support.c
+++ b/kernel/debug/kdb/kdb_support.c
@@ -544,12 +544,12 @@ int kdb_putword(unsigned long addr, unsigned long word, size_t size)
  * Returns:
  *	Mask for process state.
  * Notes:
- *	The mask folds data from several sources into a single long value, so
- *	be careful not to overlap the bits.  TASK_* bits are in the LSB,
- *	special cases like UNRUNNABLE are in the MSB.  As of 2.6.10-rc1 there
- *	is no overlap between TASK_* and EXIT_* but that may not always be
- *	true, so EXIT_* bits are shifted left 16 bits before being stored in
- *	the mask.
+ *	The mask folds data from several sources into a single unsigned long
+ *      value, so be careful not to overlap the bits.  TASK_* bits are in the
+ *      LSB, special cases like UNRUNNABLE are in the MSB.  As of 2.6.10-rc1
+ *      there is no overlap between TASK_* and EXIT_* but that may not always
+ *      be true, so EXIT_* bits are shifted left 16 bits before being stored
+ *      in the mask.
  */
 
 /* unrunnable is < 0 */
@@ -560,7 +560,7 @@ int kdb_putword(unsigned long addr, unsigned long word, size_t size)
 
 unsigned long kdb_task_state_string(const char *s)
 {
-	long res = 0;
+	unsigned long res = 0;
 	if (!s) {
 		s = kdbgetenv("PS");
 		if (!s)
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-05-12 14:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-12 12:46 [PATCH] kdb: match return value to function signature Nicholas Mc Guire
2015-05-12 14:31 ` Daniel Thompson
2015-05-12 14:39   ` Nicholas Mc Guire

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox