lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 22 Jul 2010 20:25:29 -0500
From:	Armando Uribe <x0095078@...com>
To:	Greg Kroah-Hartman <gregkh@...e.de>
Cc:	Omar Ramirez Luna <omar.ramirez@...com>,
	Ohad Ben-Cohen <ohad@...ery.com>,
	Ameya Palande <ameya.palande@...ia.com>,
	<linux-kernel@...r.kernel.org>, <devel@...verdev.osuosl.org>,
	Rene Sapiens <rene.sapiens@...com>,
	Felipe Contreras <felipe.contreras@...il.com>,
	Armando Uribe <x0095078@...com>
Subject: [PATCH 4/9] staging: tidspbridge: Change macros to static inline functions used in cload

This patch changes the macros to static inline function used
in cload as well adds two definition of const to avoid using magic
numbers

Signed-off-by: Armando Uribe <x0095078@...com>
---
 drivers/staging/tidspbridge/dynload/cload.c |   16 +++++++-------
 drivers/staging/tidspbridge/dynload/doff.h  |   31 +++++++++++++++++++-------
 drivers/staging/tidspbridge/dynload/tramp.c |    2 +-
 3 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/drivers/staging/tidspbridge/dynload/cload.c b/drivers/staging/tidspbridge/dynload/cload.c
index e48e91b..32150f0 100644
--- a/drivers/staging/tidspbridge/dynload/cload.c
+++ b/drivers/staging/tidspbridge/dynload/cload.c
@@ -528,7 +528,7 @@ static void allocate_sections(struct dload_state *dlthis)
 		}
 #endif
 		/* allocate target storage for sections that require it */
-		if (DS_NEEDS_ALLOCATION(shp)) {
+		if (ds_needs_allocation(shp)) {
 			*asecs = *DOFFSEC_IS_LDRSEC(shp);
 			asecs->context = 0;	/* zero the context field */
 #if BITS_PER_AU > BITS_PER_BYTE
@@ -540,7 +540,7 @@ static void allocate_sections(struct dload_state *dlthis)
 			if (dlthis->myalloc != NULL) {
 				if (!dlthis->myalloc->
 				    dload_allocate(dlthis->myalloc, asecs,
-						   DS_ALIGNMENT(asecs->type))) {
+						   ds_alignment(asecs->type))) {
 					dload_error(dlthis, tgtalloc,
 						    asecs->name, asecs->size);
 					return;
@@ -1155,7 +1155,7 @@ static void dload_data(struct dload_state *dlthis)
 	 */
 	for (curr_sect = 0; curr_sect < dlthis->dfile_hdr.df_no_scns;
 	     curr_sect += 1) {
-		if (DS_NEEDS_DOWNLOAD(sptr)) {
+		if (ds_needs_download(sptr)) {
 			s32 nip;
 			ldr_addr image_offset = 0;
 			/* set relocation info for this section */
@@ -1201,7 +1201,7 @@ static void dload_data(struct dload_state *dlthis)
 				dest = ibuf.bufr;
 #ifdef OPT_ZERO_COPY_LOADER
 				zero_copy = false;
-				if (DLOAD_SECT_TYPE(sptr) != DLOAD_CINIT) {
+				if (!dload_check_type(sptr, DLOAD_CINIT) {
 					dlthis->myio->writemem(dlthis->myio,
 							       &dest,
 							       lptr->load_addr +
@@ -1267,8 +1267,8 @@ static void dload_data(struct dload_state *dlthis)
 
 					/* stuff the result into target
 					 * memory */
-					if (DLOAD_SECT_TYPE(sptr) ==
-					    DLOAD_CINIT) {
+					if (dload_check_type(sptr,
+						DLOAD_CINIT)) {
 						cload_cinit(dlthis,
 							    &ibuf.ipacket);
 						cinit_processed = true;
@@ -1306,7 +1306,7 @@ static void dload_data(struct dload_state *dlthis)
 				    BYTE_TO_TADDR(ibuf.ipacket.packet_size);
 			}	/* process packets */
 			/* if this is a BSS section, we may want to fill it */
-			if (DLOAD_SECT_TYPE(sptr) != DLOAD_BSS)
+			if (!dload_check_type(sptr, DLOAD_BSS))
 				goto loop_cont;
 
 			if (!(dlthis->myoptions & DLOAD_INITBSS))
@@ -1330,7 +1330,7 @@ static void dload_data(struct dload_state *dlthis)
 		}
 		/* if DS_DOWNLOAD_MASK */
 		/* If not loading, but BSS, zero initialize */
-		if (DLOAD_SECT_TYPE(sptr) != DLOAD_BSS)
+		if (!dload_check_type(sptr, DLOAD_BSS))
 			goto loop_cont;
 
 		if (!(dlthis->myoptions & DLOAD_INITBSS))
diff --git a/drivers/staging/tidspbridge/dynload/doff.h b/drivers/staging/tidspbridge/dynload/doff.h
index 5bf9924..c00d189 100644
--- a/drivers/staging/tidspbridge/dynload/doff.h
+++ b/drivers/staging/tidspbridge/dynload/doff.h
@@ -326,19 +326,32 @@ struct reloc_record_t {
 /**************************************************************************** */
 
 /* Enum for DOFF section types (bits 0-3 of flag): See dynamic_loader.h */
-
-/* Macros to help processing of sections */
-#define DLOAD_SECT_TYPE(s_hdr)      ((s_hdr)->ds_flags & 0xF)
-
+#define DS_SECTION_TYPE_MASK	0xF
 /* DS_ALLOCATE indicates whether a section needs space on the target */
 #define DS_ALLOCATE_MASK            0x10
-#define DS_NEEDS_ALLOCATION(s_hdr)  ((s_hdr)->ds_flags & DS_ALLOCATE_MASK)
-
 /* DS_DOWNLOAD indicates that the loader needs to copy bits */
 #define DS_DOWNLOAD_MASK            0x20
-#define DS_NEEDS_DOWNLOAD(s_hdr)    ((s_hdr)->ds_flags & DS_DOWNLOAD_MASK)
-
 /* Section alignment requirement in AUs */
-#define DS_ALIGNMENT(ds_flags) (1 << (((ds_flags) >> 8) & 0xF))
+#define DS_ALIGNMENT_SHIFT	8
+
+static inline bool dload_check_type(struct doff_scnhdr_t *sptr, u32 flag)
+{
+	return (sptr->ds_flags & DS_SECTION_TYPE_MASK) == flag;
+}
+static inline bool ds_needs_allocation(struct doff_scnhdr_t *sptr)
+{
+	return sptr->ds_flags & DS_ALLOCATE_MASK;
+}
+
+static inline bool ds_needs_download(struct doff_scnhdr_t *sptr)
+{
+	return sptr->ds_flags & DS_DOWNLOAD_MASK;
+}
+
+static inline int ds_alignment(u16 ds_flags)
+{
+	return 1 << ((ds_flags >> DS_ALIGNMENT_SHIFT) & DS_SECTION_TYPE_MASK);
+}
+
 
 #endif /* _DOFF_H */
diff --git a/drivers/staging/tidspbridge/dynload/tramp.c b/drivers/staging/tidspbridge/dynload/tramp.c
index 7b593fc..81314d2 100644
--- a/drivers/staging/tidspbridge/dynload/tramp.c
+++ b/drivers/staging/tidspbridge/dynload/tramp.c
@@ -48,7 +48,7 @@ static int priv_tramp_sect_tgt_alloc(struct dload_state *dlthis)
 	sect_info->load_addr = 0;
 	ret_val = dlthis->myalloc->dload_allocate(dlthis->myalloc,
 						  sect_info,
-						  DS_ALIGNMENT
+						  ds_alignment
 						  (sect_info->type));
 
 	if (ret_val == 0)
-- 
1.6.3.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ