[Yaffs] [PATCH 2/2] Fix warnings in yaffs

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Simon Glass
Date:  
To: yaffs
Subject: [Yaffs] [PATCH 2/2] Fix warnings in yaffs
Hi,

This patch went into U-Boot - I see that the YAFFS code in this area
is quite different but on closer inspection it looks like this warning
may still crop up in gcc 4.6.

Regards,
Simon

---------- Forwarded message ----------
From: Simon Glass <>
Date: Tue, Nov 15, 2011 at 8:17 PM
Subject: [PATCH 2/2] Fix warnings in yaffs
To: U-Boot Mailing List <>
Cc: Simon Glass <>


Sorry if this is already fixed somewhere - I could not find it.

This fixes the warnings show below.

yaffs_tagscompat.c: In function
'yaffs_TagsCompatabilityReadChunkWithTagsFromNAND':
yaffs_tagscompat.c:151: warning: dereferencing pointer 'tu' does break
strict-aliasing rules
yaffs_tagscompat.c:150: warning: dereferencing pointer 'tu' does break
strict-aliasing rules
yaffs_tagscompat.c:149: warning: dereferencing pointer 'tu' does break
strict-aliasing rules
yaffs_tagscompat.c:148: warning: dereferencing pointer 'tu' does break
strict-aliasing rules
yaffs_tagscompat.c:147: warning: dereferencing pointer 'tu' does break
strict-aliasing rules
yaffs_tagscompat.c:146: warning: dereferencing pointer 'tu' does break
strict-aliasing rules
yaffs_tagscompat.c:145: warning: dereferencing pointer 'tu' does break
strict-aliasing rules
yaffs_tagscompat.c:144: warning: dereferencing pointer 'tu' does break
strict-aliasing rules
yaffs_tagscompat.c:141: note: initialized from here

Signed-off-by: Simon Glass <>
---
 fs/yaffs2/yaffs_tagscompat.c |   15 +++++++--------
 1 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/fs/yaffs2/yaffs_tagscompat.c b/fs/yaffs2/yaffs_tagscompat.c
index 70a8a8c..e872323 100644
--- a/fs/yaffs2/yaffs_tagscompat.c
+++ b/fs/yaffs2/yaffs_tagscompat.c
@@ -136,9 +136,8 @@ static void yaffs_LoadTagsIntoSpare(yaffs_Spare * sparePtr,
 }

 static void yaffs_GetTagsFromSpare(yaffs_Device * dev, yaffs_Spare * sparePtr,
-                                  yaffs_Tags * tagsPtr)
+                                  yaffs_TagsUnion *tu)
 {
-       yaffs_TagsUnion *tu = (yaffs_TagsUnion *) tagsPtr;
       int result;

       tu->asBytes[0] = sparePtr->tagByte0;
@@ -150,7 +149,7 @@ static void yaffs_GetTagsFromSpare(yaffs_Device *
dev, yaffs_Spare * sparePtr,
       tu->asBytes[6] = sparePtr->tagByte6;
       tu->asBytes[7] = sparePtr->tagByte7;

-       result = yaffs_CheckECCOnTags(tagsPtr);
+       result = yaffs_CheckECCOnTags(&tu->asTags);
       if (result > 0) {
               dev->tagsEccFixed++;
       } else if (result < 0) {
@@ -437,7 +436,7 @@ int
yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(yaffs_Device * dev,
 {

       yaffs_Spare spare;
-       yaffs_Tags tags;
+       yaffs_TagsUnion tags;
       yaffs_ECCResult eccResult;

       static yaffs_Spare spareFF;
@@ -467,10 +466,10 @@ int
yaffs_TagsCompatabilityReadChunkWithTagsFromNAND(yaffs_Device * dev,
                       if (eTags->chunkUsed) {
                               yaffs_GetTagsFromSpare(dev, &spare, &tags);

-                               eTags->objectId = tags.objectId;
-                               eTags->chunkId = tags.chunkId;
-                               eTags->byteCount = tags.byteCount;
-                               eTags->serialNumber = tags.serialNumber;
+                               eTags->objectId = tags.asTags.objectId;
+                               eTags->chunkId = tags.asTags.chunkId;
+                               eTags->byteCount = tags.asTags.byteCount;
+                               eTags->serialNumber = tags.asTags.serialNumber;
                       }
               }

--
1.7.3.1