← Commit list

53f30b41e

Denys Vlasenko
Denys Vlasenko
2011-01-20
FAILED Duration: 228s

Subject

ifplugd: eliminate aliasing warnings

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

networking/ifplugd.c+14 -10
@@ -131,18 +131,20 @@ static int network_ioctl(int request, void* data, const char *errmsg)
static smallint detect_link_mii(void)
{
- struct ifreq ifreq;
- struct mii_ioctl_data *mii = (void *)&ifreq.ifr_data;
+ /* char buffer instead of bona-fide struct avoids aliasing warning */
+ char buf[sizeof(struct ifreq)];
+ struct ifreq *ifreq = (void *)buf;
+ struct mii_ioctl_data *mii = (void *)&ifreq->ifr_data;
- set_ifreq_to_ifname(&ifreq);
+ set_ifreq_to_ifname(ifreq);
- if (network_ioctl(SIOCGMIIPHY, &ifreq, "SIOCGMIIPHY") < 0) {
+ if (network_ioctl(SIOCGMIIPHY, ifreq, "SIOCGMIIPHY") < 0) {
return IFSTATUS_ERR;
}
mii->reg_num = 1;
- if (network_ioctl(SIOCGMIIREG, &ifreq, "SIOCGMIIREG") < 0) {
+ if (network_ioctl(SIOCGMIIREG, ifreq, "SIOCGMIIREG") < 0) {
return IFSTATUS_ERR;
}
@@ -151,18 +153,20 @@ static smallint detect_link_mii(void)
static smallint detect_link_priv(void)
{
- struct ifreq ifreq;
- struct mii_ioctl_data *mii = (void *)&ifreq.ifr_data;
+ /* char buffer instead of bona-fide struct avoids aliasing warning */
+ char buf[sizeof(struct ifreq)];
+ struct ifreq *ifreq = (void *)buf;
+ struct mii_ioctl_data *mii = (void *)&ifreq->ifr_data;
- set_ifreq_to_ifname(&ifreq);
+ set_ifreq_to_ifname(ifreq);
- if (network_ioctl(SIOCDEVPRIVATE, &ifreq, "SIOCDEVPRIVATE") < 0) {
+ if (network_ioctl(SIOCDEVPRIVATE, ifreq, "SIOCDEVPRIVATE") < 0) {
return IFSTATUS_ERR;
}
mii->reg_num = 1;
- if (network_ioctl(SIOCDEVPRIVATE+1, &ifreq, "SIOCDEVPRIVATE+1") < 0) {
+ if (network_ioctl(SIOCDEVPRIVATE+1, ifreq, "SIOCDEVPRIVATE+1") < 0) {
return IFSTATUS_ERR;
}