Get rid of the bogus IFP2FC() macro and use IFP2FWC(). IFP2FC()

attempted to cast a struct ifnet to a struct fw_com which resulted in
data corruption.

PR:		kern/91307
Submitted by:	Alex Semenyaka <alex at semenyaka do ru>
MFC After:	6 days
This commit is contained in:
Brooks Davis 2006-01-11 05:37:21 +00:00
parent 9e28677ee3
commit 118b438d73
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=154209

View file

@ -62,8 +62,6 @@
#include <netinet6/nd6.h>
#endif
#define IFP2FC(IFP) ((struct fw_com *)IFP)
MALLOC_DEFINE(M_FWCOM, "fw_com", "firewire interface internals");
struct fw_hwaddr firewire_broadcastaddr = {
@ -79,7 +77,7 @@ static int
firewire_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
struct rtentry *rt0)
{
struct fw_com *fc = IFP2FC(ifp);
struct fw_com *fc = IFP2FWC(ifp);
int error, type;
struct rtentry *rt = NULL;
struct m_tag *mtag;
@ -499,7 +497,7 @@ firewire_input_fragment(struct fw_com *fc, struct mbuf *m, int src)
void
firewire_input(struct ifnet *ifp, struct mbuf *m, uint16_t src)
{
struct fw_com *fc = IFP2FC(ifp);
struct fw_com *fc = IFP2FWC(ifp);
union fw_encap *enc;
int type, isr;
@ -667,7 +665,7 @@ firewire_ioctl(struct ifnet *ifp, int command, caddr_t data)
struct sockaddr *sa;
sa = (struct sockaddr *) & ifr->ifr_data;
bcopy(&IFP2FC(ifp)->fc_hwaddr,
bcopy(&IFP2FWC(ifp)->fc_hwaddr,
(caddr_t) sa->sa_data, sizeof(struct fw_hwaddr));
}
break;
@ -747,7 +745,7 @@ firewire_resolvemulti(struct ifnet *ifp, struct sockaddr **llsa,
void
firewire_ifattach(struct ifnet *ifp, struct fw_hwaddr *llc)
{
struct fw_com *fc = IFP2FC(ifp);
struct fw_com *fc = IFP2FWC(ifp);
struct ifaddr *ifa;
struct sockaddr_dl *sdl;
static const char* speeds[] = {
@ -794,7 +792,7 @@ firewire_ifdetach(struct ifnet *ifp)
void
firewire_busreset(struct ifnet *ifp)
{
struct fw_com *fc = IFP2FC(ifp);
struct fw_com *fc = IFP2FWC(ifp);
struct fw_reass *r;
struct mbuf *m;