This is the mail archive of the ecos-bugs@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Issue 1002122] New: controller abort exception by removing a multicast address from multicast list


Please do not reply to this email, use the link below.

https://bugzilla.ecoscentric.com/show_bug.cgi?id=1002122

          Issue ID: 1002122
           Summary: controller abort exception by removing a multicast
                    address from multicast list
           Product: eCos
           Version: 2.0
            Target: Custom (Customer specific)
 Architecture/Host_ ARM
                OS:
            Status: UNCONFIRMED
          Severity: normal
          Priority: low
         Component: TCP/IP
          Assignee: unassigned@bugs.ecos.sourceware.org
          Reporter: ckraus@bihl-wiedemann.de
        QA Contact: ecos-bugs@ecos.sourceware.org
                CC: ecos-bugs@ecos.sourceware.org
     Custom Target: STR912FAW47

Overview:
In our application we need to add a multicast address in the multicast list of
the bsd stack. We are using the appropriate bsd stack function to add the
multicast address. After we add the multicast address and before! removing we
found out that the le_next pointer (which points to the next element in the
list) is not vaild. It points to nothing!
Anyway, ecos removes the elements from the list and (re)writes the not valid
pointer addresses in the first pointer (first pointer is static to find always
the first element of the list).

Now, If we want to add another multicast address or we receiving a multicast
frame, ecos uses the first pointer again to find the first element in the list.
The pointer is not valid and we get a data abort exception from the controller. 

Steps to Reproduce:
- adding a multicast address in the multicast list of the bsd stack
- removing the same multicast address from the multicast list
- trying to add another address or receiving a multicast frame

Actual Results:
- data abort excption due to not valid pointer

the struct of one list elemet is the following:

#define LIST_ENTRY(type)                                                \
struct {                                                                \
        struct type *le_next;   /* next element */                      \
        struct type **le_prev;  /* address of previous next element */  \
}

struct ifmultiaddr {
        LIST_ENTRY(ifmultiaddr) ifma_link; /* queue macro glue */
        struct  sockaddr *ifma_addr;    /* address this membership is for */
        struct  sockaddr *ifma_lladdr;  /* link-layer translation, if any */
        struct  ifnet *ifma_ifp;        /* back-pointer to interface */
        u_int   ifma_refcount;          /* reference count */
        void    *ifma_protospec;        /* protocol-specific state, if any */
};

and can be found at .../net/var.h

The whole memory for the bsd is at the external sram in our application!


Thanks a lot for your help and ideas
best regards
Christian

-- 
You are receiving this mail because:
You are the QA Contact for the issue.
You are on the CC list for the issue.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]