Commit 83e0a4a9 authored by Samson Tam's avatar Samson Tam Committed by Alex Deucher
Browse files

drm/amd/display: fix static analysis warnings



[Why & How]
Fix static analysis warnings in SPL library

Reviewed-by: default avatarAlvin Lee <alvin.lee2@amd.com>
Signed-off-by: default avatarSamson Tam <Samson.Tam@amd.com>
Signed-off-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent a6f59c04
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -5,10 +5,8 @@
#ifndef __DC_SPL_TYPES_H__
#define __DC_SPL_TYPES_H__

#include "spl_debug.h"
#include "spl_os_types.h"   // swap
#ifndef SPL_ASSERT
#define SPL_ASSERT(_bool) ((void *)0)
#endif
#include "spl_fixpt31_32.h"	// fixed31_32 and related functions
#include "spl_custom_float.h" // custom float and related functions

+19 −14
Original line number Diff line number Diff line
@@ -5,21 +5,26 @@
#ifndef SPL_DEBUG_H
#define SPL_DEBUG_H

#ifdef SPL_ASSERT
#undef SPL_ASSERT
#endif
#define SPL_ASSERT(b)
#if defined(CONFIG_HAVE_KGDB) || defined(CONFIG_KGDB)
#define SPL_ASSERT_CRITICAL(expr) do {	\
	if (WARN_ON(!(expr))) { \
		kgdb_breakpoint(); \
	} \
} while (0)
#else
#define SPL_ASSERT_CRITICAL(expr) do {	\
	if (WARN_ON(!(expr))) { \
		; \
	} \
} while (0)
#endif /* CONFIG_HAVE_KGDB || CONFIG_KGDB */

#define SPL_ASSERT_CRITICAL(expr)  do {if (expr)/* Do nothing */; } while (0)
#if defined(CONFIG_DEBUG_KERNEL_DC)
#define SPL_ASSERT(expr) SPL_ASSERT_CRITICAL(expr)
#else
#define SPL_ASSERT(expr) WARN_ON(!(expr))
#endif /* CONFIG_DEBUG_KERNEL_DC */

#ifdef SPL_DALMSG
#undef SPL_DALMSG
#endif
#define SPL_DALMSG(b)

#ifdef SPL_DAL_ASSERT_MSG
#undef SPL_DAL_ASSERT_MSG
#endif
#define SPL_DAL_ASSERT_MSG(b, m)
#define SPL_BREAK_TO_DEBUGGER() SPL_ASSERT(0)

#endif  // SPL_DEBUG_H
+16 −16
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ static inline unsigned long long complete_integer_division_u64(
{
	unsigned long long result;

	ASSERT(divisor);
	SPL_ASSERT(divisor);

	result = spl_div64_u64_rem(dividend, divisor, remainder);

@@ -63,7 +63,7 @@ struct spl_fixed31_32 spl_fixpt_from_fraction(long long numerator, long long den
	unsigned long long res_value = complete_integer_division_u64(
		arg1_value, arg2_value, &remainder);

	ASSERT(res_value <= LONG_MAX);
	SPL_ASSERT(res_value <= (unsigned long long)LONG_MAX);

	/* determine fractional part */
	{
@@ -85,7 +85,7 @@ struct spl_fixed31_32 spl_fixpt_from_fraction(long long numerator, long long den
	{
		unsigned long long summand = (remainder << 1) >= arg2_value;

		ASSERT(res_value <= LLONG_MAX - summand);
		SPL_ASSERT(res_value <= (unsigned long long)LLONG_MAX - summand);

		res_value += summand;
	}
@@ -118,19 +118,19 @@ struct spl_fixed31_32 spl_fixpt_mul(struct spl_fixed31_32 arg1, struct spl_fixed

	res.value = arg1_int * arg2_int;

	ASSERT(res.value <= (long long)LONG_MAX);
	SPL_ASSERT(res.value <= (long long)LONG_MAX);

	res.value <<= FIXED31_32_BITS_PER_FRACTIONAL_PART;

	tmp = arg1_int * arg2_fra;

	ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));
	SPL_ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));

	res.value += tmp;

	tmp = arg2_int * arg1_fra;

	ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));
	SPL_ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));

	res.value += tmp;

@@ -139,7 +139,7 @@ struct spl_fixed31_32 spl_fixpt_mul(struct spl_fixed31_32 arg1, struct spl_fixed
	tmp = (tmp >> FIXED31_32_BITS_PER_FRACTIONAL_PART) +
		(tmp >= (unsigned long long)spl_fixpt_half.value);

	ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));
	SPL_ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));

	res.value += tmp;

@@ -163,17 +163,17 @@ struct spl_fixed31_32 spl_fixpt_sqr(struct spl_fixed31_32 arg)

	res.value = arg_int * arg_int;

	ASSERT(res.value <= (long long)LONG_MAX);
	SPL_ASSERT(res.value <= (long long)LONG_MAX);

	res.value <<= FIXED31_32_BITS_PER_FRACTIONAL_PART;

	tmp = arg_int * arg_fra;

	ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));
	SPL_ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));

	res.value += tmp;

	ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));
	SPL_ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));

	res.value += tmp;

@@ -182,7 +182,7 @@ struct spl_fixed31_32 spl_fixpt_sqr(struct spl_fixed31_32 arg)
	tmp = (tmp >> FIXED31_32_BITS_PER_FRACTIONAL_PART) +
		(tmp >= (unsigned long long)spl_fixpt_half.value);

	ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));
	SPL_ASSERT(tmp <= (unsigned long long)(LLONG_MAX - res.value));

	res.value += tmp;

@@ -196,7 +196,7 @@ struct spl_fixed31_32 spl_fixpt_recip(struct spl_fixed31_32 arg)
	 * Good idea to use Newton's method
	 */

	ASSERT(arg.value);
	SPL_ASSERT(arg.value);

	return spl_fixpt_from_fraction(
		spl_fixpt_one.value,
@@ -295,7 +295,7 @@ static struct spl_fixed31_32 fixed31_32_exp_from_taylor_series(struct spl_fixed3
		n + 1);
	/* TODO find correct res */

	ASSERT(spl_fixpt_lt(arg, spl_fixpt_one));
	SPL_ASSERT(spl_fixpt_lt(arg, spl_fixpt_one));

	do
		res = spl_fixpt_add(
@@ -337,9 +337,9 @@ struct spl_fixed31_32 spl_fixpt_exp(struct spl_fixed31_32 arg)
				spl_fixpt_ln2,
				m));

		ASSERT(m != 0);
		SPL_ASSERT(m != 0);

		ASSERT(spl_fixpt_lt(
		SPL_ASSERT(spl_fixpt_lt(
			spl_fixpt_abs(r),
			spl_fixpt_one));

@@ -364,7 +364,7 @@ struct spl_fixed31_32 spl_fixpt_log(struct spl_fixed31_32 arg)

	struct spl_fixed31_32 error;

	ASSERT(arg.value > 0);
	SPL_ASSERT(arg.value > 0);
	/* TODO if arg is negative, return NaN */
	/* TODO if arg is zero, return -INF */

+7 −10
Original line number Diff line number Diff line
@@ -5,11 +5,8 @@
#ifndef __SPL_FIXED31_32_H__
#define __SPL_FIXED31_32_H__

#include "os_types.h"
#include "spl_debug.h"
#include "spl_os_types.h"   // swap
#ifndef ASSERT
#define ASSERT(_bool) ((void *)0)
#endif

#ifndef LLONG_MAX
#define LLONG_MAX 9223372036854775807ll
@@ -194,7 +191,7 @@ static inline struct spl_fixed31_32 spl_fixpt_clamp(
 */
static inline struct spl_fixed31_32 spl_fixpt_shl(struct spl_fixed31_32 arg, unsigned char shift)
{
	ASSERT(((arg.value >= 0) && (arg.value <= LLONG_MAX >> shift)) ||
	SPL_ASSERT(((arg.value >= 0) && (arg.value <= LLONG_MAX >> shift)) ||
		((arg.value < 0) && (arg.value >= ~(LLONG_MAX >> shift))));

	arg.value = arg.value << shift;
@@ -231,7 +228,7 @@ static inline struct spl_fixed31_32 spl_fixpt_add(struct spl_fixed31_32 arg1, st
{
	struct spl_fixed31_32 res;

	ASSERT(((arg1.value >= 0) && (LLONG_MAX - arg1.value >= arg2.value)) ||
	SPL_ASSERT(((arg1.value >= 0) && (LLONG_MAX - arg1.value >= arg2.value)) ||
		((arg1.value < 0) && (LLONG_MIN - arg1.value <= arg2.value)));

	res.value = arg1.value + arg2.value;
@@ -256,7 +253,7 @@ static inline struct spl_fixed31_32 spl_fixpt_sub(struct spl_fixed31_32 arg1, st
{
	struct spl_fixed31_32 res;

	ASSERT(((arg2.value >= 0) && (LLONG_MIN + arg2.value <= arg1.value)) ||
	SPL_ASSERT(((arg2.value >= 0) && (LLONG_MIN + arg2.value <= arg1.value)) ||
		((arg2.value < 0) && (LLONG_MAX + arg2.value >= arg1.value)));

	res.value = arg1.value - arg2.value;
@@ -448,7 +445,7 @@ static inline int spl_fixpt_round(struct spl_fixed31_32 arg)

	const long long summand = spl_fixpt_half.value;

	ASSERT(LLONG_MAX - (long long)arg_value >= summand);
	SPL_ASSERT(LLONG_MAX - (long long)arg_value >= summand);

	arg_value += summand;

@@ -469,7 +466,7 @@ static inline int spl_fixpt_ceil(struct spl_fixed31_32 arg)
	const long long summand = spl_fixpt_one.value -
		spl_fixpt_epsilon.value;

	ASSERT(LLONG_MAX - (long long)arg_value >= summand);
	SPL_ASSERT(LLONG_MAX - (long long)arg_value >= summand);

	arg_value += summand;

@@ -504,7 +501,7 @@ static inline struct spl_fixed31_32 spl_fixpt_truncate(struct spl_fixed31_32 arg
	bool negative = arg.value < 0;

	if (frac_bits >= FIXED31_32_BITS_PER_FRACTIONAL_PART) {
		ASSERT(frac_bits == FIXED31_32_BITS_PER_FRACTIONAL_PART);
		SPL_ASSERT(frac_bits == FIXED31_32_BITS_PER_FRACTIONAL_PART);
		return arg;
	}

+2 −1
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@
#ifndef _SPL_OS_TYPES_H_
#define _SPL_OS_TYPES_H_

#include "spl_debug.h"

#include <linux/slab.h>
#include <linux/kgdb.h>
#include <linux/kref.h>
@@ -18,7 +20,6 @@
 * general debug capabilities
 *
 */
#define SPL_BREAK_TO_DEBUGGER() ASSERT(0)

static inline uint64_t spl_div_u64_rem(uint64_t dividend, uint32_t divisor, uint32_t *remainder)
{