Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F153431631
D14900.id40891.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
27 KB
Referenced Files
None
Subscribers
None
D14900.id40891.diff
View Options
Index: sys/dev/an/if_an.c
===================================================================
--- sys/dev/an/if_an.c
+++ sys/dev/an/if_an.c
@@ -1934,7 +1934,8 @@
error = 0;
break;
case SIOCGAIRONET:
- error = copyin(ifr->ifr_data, &sc->areq, sizeof(sc->areq));
+ error = copyin(ifr_data_get_ptr(ifr), &sc->areq,
+ sizeof(sc->areq));
if (error != 0)
break;
AN_LOCK(sc);
@@ -1963,13 +1964,15 @@
break;
}
AN_UNLOCK(sc);
- error = copyout(&sc->areq, ifr->ifr_data, sizeof(sc->areq));
+ error = copyout(&sc->areq, ifr_data_get_ptr(ifr),
+ sizeof(sc->areq));
break;
case SIOCSAIRONET:
if ((error = priv_check(td, PRIV_DRIVER)))
goto out;
AN_LOCK(sc);
- error = copyin(ifr->ifr_data, &sc->areq, sizeof(sc->areq));
+ error = copyin(ifr_data_get_ptr(ifr), &sc->areq,
+ sizeof(sc->areq));
if (error != 0)
break;
an_setdef(sc, &sc->areq);
@@ -1978,7 +1981,8 @@
case SIOCGPRIVATE_0: /* used by Cisco client utility */
if ((error = priv_check(td, PRIV_DRIVER)))
goto out;
- error = copyin(ifr->ifr_data, &l_ioctl, sizeof(l_ioctl));
+ error = copyin(ifr_data_get_ptr(ifr), &l_ioctl,
+ sizeof(l_ioctl));
if (error)
goto out;
mode = l_ioctl.command;
@@ -1996,13 +2000,15 @@
AN_UNLOCK(sc);
if (!error) {
/* copy out the updated command info */
- error = copyout(&l_ioctl, ifr->ifr_data, sizeof(l_ioctl));
+ error = copyout(&l_ioctl, ifr_data_get_ptr(ifr),
+ sizeof(l_ioctl));
}
break;
case SIOCGPRIVATE_1: /* used by Cisco client utility */
if ((error = priv_check(td, PRIV_DRIVER)))
goto out;
- error = copyin(ifr->ifr_data, &l_ioctl, sizeof(l_ioctl));
+ error = copyin(ifr_data_get_ptr(ifr), &l_ioctl,
+ sizeof(l_ioctl));
if (error)
goto out;
l_ioctl.command = 0;
Index: sys/dev/ath/if_ath_ioctl.c
===================================================================
--- sys/dev/ath/if_ath_ioctl.c
+++ sys/dev/ath/if_ath_ioctl.c
@@ -267,12 +267,12 @@
rt->info[sc->sc_txrix].dot11Rate &~ IEEE80211_RATE_BASIC;
if (rt->info[sc->sc_txrix].phy & IEEE80211_T_HT)
sc->sc_stats.ast_tx_rate |= IEEE80211_RATE_MCS;
- return copyout(&sc->sc_stats,
- ifr->ifr_data, sizeof (sc->sc_stats));
+ return copyout(&sc->sc_stats, ifr_data_get_ptr(ifr),
+ sizeof (sc->sc_stats));
}
case SIOCGATHAGSTATS:
- return copyout(&sc->sc_aggr_stats,
- ifr->ifr_data, sizeof (sc->sc_aggr_stats));
+ return copyout(&sc->sc_aggr_stats, ifr_data_get_ptr(ifr),
+ sizeof (sc->sc_aggr_stats));
case SIOCZATHSTATS: {
int error;
Index: sys/dev/cxgbe/t4_main.c
===================================================================
--- sys/dev/cxgbe/t4_main.c
+++ sys/dev/cxgbe/t4_main.c
@@ -1800,7 +1800,7 @@
case SIOCGI2C: {
struct ifi2creq i2c;
- rc = copyin(ifr->ifr_data, &i2c, sizeof(i2c));
+ rc = copyin(ifr_data_get_ptr(ifr), &i2c, sizeof(i2c));
if (rc != 0)
break;
if (i2c.dev_addr != 0xA0 && i2c.dev_addr != 0xA2) {
@@ -1818,7 +1818,7 @@
i2c.offset, i2c.len, &i2c.data[0]);
end_synchronized_op(sc, 0);
if (rc == 0)
- rc = copyout(&i2c, ifr->ifr_data, sizeof(i2c));
+ rc = copyout(&i2c, ifr_data_get_ptr(ifr), sizeof(i2c));
break;
}
Index: sys/dev/if_ndis/if_ndis.c
===================================================================
--- sys/dev/if_ndis/if_ndis.c
+++ sys/dev/if_ndis/if_ndis.c
@@ -2975,11 +2975,12 @@
switch (cmd) {
case SIOCGDRVSPEC:
case SIOCSDRVSPEC:
- error = copyin(ifr->ifr_data, &oid, sizeof(oid));
+ error = copyin(ifr_data_get_ptr(ifr), &oid, sizeof(oid));
if (error)
break;
oidbuf = malloc(oid.len, M_TEMP, M_WAITOK | M_ZERO);
- error = copyin(ifr->ifr_data + sizeof(oid), oidbuf, oid.len);
+ error = copyin((caddr_t)ifr_data_get_ptr(ifr) + sizeof(oid),
+ oidbuf, oid.len);
}
if (error) {
@@ -3001,7 +3002,7 @@
NDIS_UNLOCK(sc);
break;
}
- error = copyin(ifr->ifr_data, &evt, sizeof(evt));
+ error = copyin(ifr_data_get_ptr(ifr), &evt, sizeof(evt));
if (error) {
NDIS_UNLOCK(sc);
break;
@@ -3012,14 +3013,15 @@
break;
}
error = copyout(&sc->ndis_evt[sc->ndis_evtcidx],
- ifr->ifr_data, sizeof(uint32_t) * 2);
+ ifr_data_get_ptr(ifr), sizeof(uint32_t) * 2);
if (error) {
NDIS_UNLOCK(sc);
break;
}
if (sc->ndis_evt[sc->ndis_evtcidx].ne_len) {
error = copyout(sc->ndis_evt[sc->ndis_evtcidx].ne_buf,
- ifr->ifr_data + (sizeof(uint32_t) * 2),
+ (caddr_t)ifr_data_get_ptr(ifr) +
+ (sizeof(uint32_t) * 2),
sc->ndis_evt[sc->ndis_evtcidx].ne_len);
if (error) {
NDIS_UNLOCK(sc);
@@ -3041,10 +3043,11 @@
switch (cmd) {
case SIOCGDRVSPEC:
case SIOCSDRVSPEC:
- error = copyout(&oid, ifr->ifr_data, sizeof(oid));
+ error = copyout(&oid, ifr_data_get_ptr(ifr), sizeof(oid));
if (error)
break;
- error = copyout(oidbuf, ifr->ifr_data + sizeof(oid), oid.len);
+ error = copyout(oidbuf,
+ (caddr_t)ifr_data_get_ptr(ifr) + sizeof(oid), oid.len);
}
free(oidbuf, M_TEMP);
Index: sys/dev/iwi/if_iwi.c
===================================================================
--- sys/dev/iwi/if_iwi.c
+++ sys/dev/iwi/if_iwi.c
@@ -2059,7 +2059,7 @@
switch (cmd) {
case SIOCGIWISTATS:
/* XXX validate permissions/memory/etc? */
- error = copyout(&sc->sc_linkqual, ifr->ifr_data,
+ error = copyout(&sc->sc_linkqual, ifr_data_get_ptr(ifr),
sizeof(struct iwi_notif_link_quality));
break;
case SIOCZIWISTATS:
Index: sys/dev/ixl/ixl_pf_main.c
===================================================================
--- sys/dev/ixl/ixl_pf_main.c
+++ sys/dev/ixl/ixl_pf_main.c
@@ -5174,7 +5174,7 @@
if (!pf->has_i2c)
return (ENOTTY);
- error = copyin(ifr->ifr_data, &i2c, sizeof(i2c));
+ error = copyin(ifr_data_get_ptr(ifr), &i2c, sizeof(i2c));
if (error != 0)
break;
if (i2c.dev_addr != 0xA0 && i2c.dev_addr != 0xA2) {
@@ -5191,7 +5191,7 @@
i2c.dev_addr, &i2c.data[i]))
return (EIO);
- error = copyout(&i2c, ifr->ifr_data, sizeof(i2c));
+ error = copyout(&i2c, ifr_data_get_ptr(ifr), sizeof(i2c));
break;
}
#endif
Index: sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c
===================================================================
--- sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c
+++ sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c
@@ -2058,7 +2058,7 @@
case SIOCGI2C: {
struct ifi2creq i2c;
- error = copyin(ifr->ifr_data, &i2c, sizeof(i2c));
+ error = copyin(ifr_data_get_ptr(ifr), &i2c, sizeof(i2c));
if (error)
break;
if (i2c.len > sizeof(i2c.data)) {
@@ -2075,7 +2075,7 @@
error = -error;
break;
}
- error = copyout(&i2c, ifr->ifr_data, sizeof(i2c));
+ error = copyout(&i2c, ifr_data_get_ptr(ifr), sizeof(i2c));
break;
}
#endif
Index: sys/dev/mlx5/mlx5_en/mlx5_en_main.c
===================================================================
--- sys/dev/mlx5/mlx5_en/mlx5_en_main.c
+++ sys/dev/mlx5/mlx5_en/mlx5_en_main.c
@@ -2884,7 +2884,7 @@
* Copy from the user-space address ifr_data to the
* kernel-space address i2c
*/
- error = copyin(ifr->ifr_data, &i2c, sizeof(i2c));
+ error = copyin(ifr_data_get_ptr(ifr), &i2c, sizeof(i2c));
if (error)
break;
@@ -2948,7 +2948,7 @@
goto err_i2c;
}
- error = copyout(&i2c, ifr->ifr_data, sizeof(i2c));
+ error = copyout(&i2c, ifr_data_get_ptr(ifr), sizeof(i2c));
err_i2c:
PRIV_UNLOCK(priv);
break;
Index: sys/dev/mwl/if_mwl.c
===================================================================
--- sys/dev/mwl/if_mwl.c
+++ sys/dev/mwl/if_mwl.c
@@ -4750,8 +4750,8 @@
* statistics. The alternative is to copy the data
* to a local structure.
*/
- return (copyout(&sc->sc_stats,
- ifr->ifr_data, sizeof (sc->sc_stats)));
+ return (copyout(&sc->sc_stats, ifr_data_get_ptr(ifr),
+ sizeof (sc->sc_stats)));
#ifdef MWL_DIAGAPI
case SIOCGMVDIAG:
/* XXX check privs */
Index: sys/dev/nxge/if_nxge.c
===================================================================
--- sys/dev/nxge/if_nxge.c
+++ sys/dev/nxge/if_nxge.c
@@ -1368,7 +1368,7 @@
void *info = NULL;
int retValue = EINVAL;
- cmd = fubyte(ifreqp->ifr_data);
+ cmd = fubyte(ifr_data_get_ptr(ifreqp));
if (cmd == -1)
return (EFAULT);
@@ -1379,7 +1379,7 @@
(xge_hal_stats_hw_info_t **)&info);
mtx_unlock(&lldev->mtx_drv);
if(status == XGE_HAL_OK) {
- if(copyout(info, ifreqp->ifr_data,
+ if(copyout(info, ifr_data_get_ptr(ifreqp),
sizeof(xge_hal_stats_hw_info_t)) == 0)
retValue = 0;
}
@@ -1397,7 +1397,7 @@
sizeof(xge_hal_pci_config_t));
mtx_unlock(&lldev->mtx_drv);
if(status == XGE_HAL_OK) {
- if(copyout(info, ifreqp->ifr_data,
+ if(copyout(info, ifr_data_get_ptr(ifreqp),
sizeof(xge_hal_pci_config_t)) == 0)
retValue = 0;
}
@@ -1417,7 +1417,7 @@
sizeof(xge_hal_stats_device_info_t));
mtx_unlock(&lldev->mtx_drv);
if(status == XGE_HAL_OK) {
- if(copyout(info, ifreqp->ifr_data,
+ if(copyout(info, ifr_data_get_ptr(ifreqp),
sizeof(xge_hal_stats_device_info_t)) == 0)
retValue = 0;
}
@@ -1438,7 +1438,7 @@
sizeof(xge_hal_stats_sw_err_t));
mtx_unlock(&lldev->mtx_drv);
if(status == XGE_HAL_OK) {
- if(copyout(info, ifreqp->ifr_data,
+ if(copyout(info, ifr_data_get_ptr(ifreqp),
sizeof(xge_hal_stats_sw_err_t)) == 0)
retValue = 0;
}
@@ -1451,7 +1451,7 @@
break;
case XGE_QUERY_DRIVERSTATS:
- if(copyout(&lldev->driver_stats, ifreqp->ifr_data,
+ if(copyout(&lldev->driver_stats, ifr_data_get_ptr(ifreqp),
sizeof(xge_driver_stats_t)) == 0) {
retValue = 0;
}
@@ -1465,7 +1465,8 @@
info = xge_os_malloc(NULL, XGE_BUFFER_SIZE);
if(info != NULL) {
strcpy(info, XGE_DRIVER_VERSION);
- if(copyout(info, ifreqp->ifr_data, XGE_BUFFER_SIZE) == 0)
+ if(copyout(info, ifr_data_get_ptr(ifreqp),
+ XGE_BUFFER_SIZE) == 0)
retValue = 0;
xge_os_free(NULL, info, XGE_BUFFER_SIZE);
}
@@ -1479,7 +1480,7 @@
sizeof(xge_hal_device_config_t));
mtx_unlock(&lldev->mtx_drv);
if(status == XGE_HAL_OK) {
- if(copyout(info, ifreqp->ifr_data,
+ if(copyout(info, ifr_data_get_ptr(ifreqp),
sizeof(xge_hal_device_config_t)) == 0)
retValue = 0;
}
@@ -1492,7 +1493,7 @@
break;
case XGE_QUERY_BUFFER_MODE:
- if(copyout(&lldev->buffer_mode, ifreqp->ifr_data,
+ if(copyout(&lldev->buffer_mode, ifr_data_get_ptr(ifreqp),
sizeof(int)) == 0)
retValue = 0;
break;
@@ -1501,7 +1502,7 @@
case XGE_SET_BUFFER_MODE_2:
case XGE_SET_BUFFER_MODE_5:
mode = (cmd == XGE_SET_BUFFER_MODE_1) ? 'Y':'N';
- if(copyout(&mode, ifreqp->ifr_data, sizeof(mode)) == 0)
+ if(copyout(&mode, ifr_data_get_ptr(ifreqp), sizeof(mode)) == 0)
retValue = 0;
break;
default:
@@ -1529,7 +1530,7 @@
int error;
u64 val64 = 0;
- error = copyin(ifreqp->ifr_data, &tmpdata, sizeof(tmpdata));
+ error = copyin(ifr_data_get_ptr(ifreqp), &tmpdata, sizeof(tmpdata));
if (error != 0)
return (error);
data = &tmpdata;
@@ -1542,7 +1543,8 @@
&data->value);
mtx_unlock(&lldev->mtx_drv);
if(status == XGE_HAL_OK) {
- if(copyout(data, ifreqp->ifr_data, sizeof(xge_register_t)) == 0)
+ if(copyout(data, ifr_data_get_ptr(ifreqp),
+ sizeof(xge_register_t)) == 0)
retValue = 0;
}
}
@@ -1587,7 +1589,7 @@
mtx_unlock(&lldev->mtx_drv);
if(retValue == 0) {
- if(copyout(data, ifreqp->ifr_data,
+ if(copyout(data, ifr_data_get_ptr(ifreqp),
sizeof(xge_hal_pci_bar0_t)) != 0) {
xge_trace(XGE_ERR, "Copyout of register values failed");
retValue = EINVAL;
Index: sys/dev/oce/oce_if.c
===================================================================
--- sys/dev/oce/oce_if.c
+++ sys/dev/oce/oce_if.c
@@ -2276,7 +2276,7 @@
struct ifreq *ifr = (struct ifreq *)data;
int rc = ENXIO;
char cookie[32] = {0};
- void *priv_data = (void *)ifr->ifr_data;
+ void *priv_data = ifr_data_get_ptr(ifr);
void *ioctl_ptr;
uint32_t req_size;
struct mbx_hdr req;
Index: sys/dev/qlnx/qlnxe/qlnx_os.c
===================================================================
--- sys/dev/qlnx/qlnxe/qlnx_os.c
+++ sys/dev/qlnx/qlnxe/qlnx_os.c
@@ -2464,7 +2464,7 @@
struct ecore_hwfn *p_hwfn = &ha->cdev.hwfns[0];
struct ecore_ptt *p_ptt;
- ret = copyin(ifr->ifr_data, &i2c, sizeof(i2c));
+ ret = copyin(ifr_data_get_ptr(ifr), &i2c, sizeof(i2c));
if (ret)
break;
@@ -2494,7 +2494,7 @@
break;
}
- ret = copyout(&i2c, ifr->ifr_data, sizeof(i2c));
+ ret = copyout(&i2c, ifr_data_get_ptr(ifr), sizeof(i2c));
QL_DPRINT8(ha, "SIOCGI2C copyout ret = %d \
len = %d addr = 0x%02x offset = 0x%04x \
Index: sys/dev/sbni/if_sbni.c
===================================================================
--- sys/dev/sbni/if_sbni.c
+++ sys/dev/sbni/if_sbni.c
@@ -1153,7 +1153,7 @@
SBNI_LOCK(sc);
bcopy(&sc->in_stats, in_stats, sizeof(struct sbni_in_stats));
SBNI_UNLOCK(sc);
- error = copyout(ifr->ifr_data, in_stats,
+ error = copyout(ifr_data_get_ptr(ifr), in_stats,
sizeof(struct sbni_in_stats));
free(in_stats, M_DEVBUF);
break;
Index: sys/dev/sfxge/sfxge.c
===================================================================
--- sys/dev/sfxge/sfxge.c
+++ sys/dev/sfxge/sfxge.c
@@ -529,7 +529,7 @@
{
struct ifi2creq i2c;
- error = copyin(ifr->ifr_data, &i2c, sizeof(i2c));
+ error = copyin(ifr_data_get_ptr(ifr), &i2c, sizeof(i2c));
if (error != 0)
break;
@@ -544,7 +544,8 @@
&i2c.data[0]);
SFXGE_ADAPTER_UNLOCK(sc);
if (error == 0)
- error = copyout(&i2c, ifr->ifr_data, sizeof(i2c));
+ error = copyout(&i2c, ifr_data_get_ptr(ifr),
+ sizeof(i2c));
break;
}
#endif
@@ -552,12 +553,13 @@
error = priv_check(curthread, PRIV_DRIVER);
if (error != 0)
break;
- error = copyin(ifr->ifr_data, &ioc, sizeof(ioc));
+ error = copyin(ifr_data_get_ptr(ifr), &ioc, sizeof(ioc));
if (error != 0)
return (error);
error = sfxge_private_ioctl(sc, &ioc);
if (error == 0) {
- error = copyout(&ioc, ifr->ifr_data, sizeof(ioc));
+ error = copyout(&ioc, ifr_data_get_ptr(ifr),
+ sizeof(ioc));
}
break;
default:
Index: sys/dev/vxge/vxge.c
===================================================================
--- sys/dev/vxge/vxge.c
+++ sys/dev/vxge/vxge.c
@@ -3710,8 +3710,8 @@
u32 offset, reqd_size = 0;
int i, err = EINVAL;
- char *command = (char *) ifr->ifr_data;
- void *reg_info = (void *) ifr->ifr_data;
+ char *command = ifr_data_get_ptr(ifr);
+ void *reg_info = ifr_data_get_ptr(ifr);
vxge_vpath_t *vpath;
vxge_hal_status_e status = VXGE_HAL_OK;
@@ -3818,7 +3818,7 @@
vxge_drv_stats_t *drv_stat;
char *buffer = NULL;
- char *command = (char *) ifr->ifr_data;
+ char *command = ifr_data_get_ptr(ifr);
vxge_hal_status_e status = VXGE_HAL_OK;
switch (*command) {
@@ -3829,7 +3829,8 @@
status = vxge_hal_aux_pci_config_read(vdev->devh,
bufsize, buffer, &retsize);
if (status == VXGE_HAL_OK)
- err = copyout(buffer, ifr->ifr_data, retsize);
+ err = copyout(buffer, ifr_data_get_ptr(ifr),
+ retsize);
else
device_printf(vdev->ndev,
"failed pciconfig statistics query\n");
@@ -3848,7 +3849,8 @@
status = vxge_hal_aux_stats_mrpcim_read(vdev->devh,
bufsize, buffer, &retsize);
if (status == VXGE_HAL_OK)
- err = copyout(buffer, ifr->ifr_data, retsize);
+ err = copyout(buffer, ifr_data_get_ptr(ifr),
+ retsize);
else
device_printf(vdev->ndev,
"failed mrpcim statistics query\n");
@@ -3864,7 +3866,8 @@
status = vxge_hal_aux_stats_device_read(vdev->devh,
bufsize, buffer, &retsize);
if (status == VXGE_HAL_OK)
- err = copyout(buffer, ifr->ifr_data, retsize);
+ err = copyout(buffer, ifr_data_get_ptr(ifr),
+ retsize);
else
device_printf(vdev->ndev,
"failed device statistics query\n");
@@ -3888,7 +3891,7 @@
((vxge_device_hw_info_t *) buffer)->port_failure =
vdev->port_failure;
- err = copyout(buffer, ifr->ifr_data, bufsize);
+ err = copyout(buffer, ifr_data_get_ptr(ifr), bufsize);
if (err != 0)
device_printf(vdev->ndev,
"failed device hardware info query\n");
@@ -3915,7 +3918,7 @@
sizeof(vxge_drv_stats_t));
}
- err = copyout(drv_stat, ifr->ifr_data, bufsize);
+ err = copyout(drv_stat, ifr_data_get_ptr(ifr), bufsize);
if (err != 0)
device_printf(vdev->ndev,
"failed driver statistics query\n");
@@ -3925,7 +3928,7 @@
break;
case VXGE_GET_BANDWIDTH:
- bw_info = (vxge_bw_info_t *) ifr->ifr_data;
+ bw_info = ifr_data_get_ptr(ifr);
if ((vdev->config.hw_info.func_id != 0) &&
(vdev->hw_fw_version < VXGE_FW_VERSION(1, 8, 0)))
@@ -3938,7 +3941,8 @@
if (status != VXGE_HAL_OK)
break;
- err = copyout(bw_info, ifr->ifr_data, sizeof(vxge_bw_info_t));
+ err = copyout(bw_info, ifr_data_get_ptr(ifr),
+ sizeof(vxge_bw_info_t));
break;
case VXGE_SET_BANDWIDTH:
@@ -3949,7 +3953,7 @@
case VXGE_SET_PORT_MODE:
if (vdev->is_privilaged) {
if (vdev->config.hw_info.ports == VXGE_DUAL_PORT_MODE) {
- port_info = (vxge_port_info_t *) ifr->ifr_data;
+ port_info = ifr_data_get_ptr(ifr);
vdev->config.port_mode = port_info->port_mode;
err = vxge_port_mode_update(vdev);
if (err != ENXIO)
@@ -3966,10 +3970,11 @@
case VXGE_GET_PORT_MODE:
if (vdev->is_privilaged) {
if (vdev->config.hw_info.ports == VXGE_DUAL_PORT_MODE) {
- port_info = (vxge_port_info_t *) ifr->ifr_data;
+ port_info = ifr_data_get_ptr(ifr);
err = vxge_port_mode_get(vdev, port_info);
if (err == VXGE_HAL_OK) {
- err = copyout(port_info, ifr->ifr_data,
+ err = copyout(port_info,
+ ifr_data_get_ptr(ifr),
sizeof(vxge_port_info_t));
}
}
@@ -4005,7 +4010,7 @@
u32 func_id;
vxge_bw_info_t *bw_info;
- bw_info = (vxge_bw_info_t *) ifr->ifr_data;
+ bw_info = ifr_data_get_ptr(ifr);
func_id = bw_info->func_id;
vdev->config.bw_info[func_id].priority = bw_info->priority;
Index: sys/net/if.h
===================================================================
--- sys/net/if.h
+++ sys/net/if.h
@@ -412,7 +412,9 @@
#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
#define ifr_phys ifr_ifru.ifru_phys /* physical wire */
#define ifr_media ifr_ifru.ifru_media /* physical media */
+#ifndef _KERNEL
#define ifr_data ifr_ifru.ifru_data /* for use by interface */
+#endif
#define ifr_reqcap ifr_ifru.ifru_cap[0] /* requested capabilities */
#define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */
#define ifr_index ifr_ifru.ifru_index /* interface index */
Index: sys/net/if.c
===================================================================
--- sys/net/if.c
+++ sys/net/if.c
@@ -2403,6 +2403,20 @@
ifrup->ifr.ifr_ifru.ifru_buffer.length = len;
}
+void *
+ifr_data_get_ptr(void *ifrp)
+{
+ union ifreq_union *ifrup;
+
+ ifrup = ifrp;
+#ifdef COMPAT_FREEBSD32
+ if (SV_CURPROC_FLAG(SV_ILP32))
+ return ((void *)(uintptr_t)
+ ifrup->ifr32.ifr_ifru.ifru_data);
+#endif
+ return (ifrup->ifr.ifr_ifru.ifru_data);
+}
+
/*
* Hardware specific interface ioctls.
*/
@@ -2584,7 +2598,8 @@
error = priv_check(td, PRIV_NET_SETIFNAME);
if (error)
return (error);
- error = copyinstr(ifr->ifr_data, new_name, IFNAMSIZ, NULL);
+ error = copyinstr(ifr_data_get_ptr(ifr), new_name, IFNAMSIZ,
+ NULL);
if (error != 0)
return (error);
if (new_name[0] == '\0')
@@ -2895,8 +2910,8 @@
error = priv_check(td, PRIV_NET_IFCREATE);
if (error == 0)
error = if_clone_create(ifr->ifr_name,
- sizeof(ifr->ifr_name),
- cmd == SIOCIFCREATE2 ? ifr->ifr_data : NULL);
+ sizeof(ifr->ifr_name), cmd == SIOCIFCREATE2 ?
+ ifr_data_get_ptr(ifr) : NULL);
CURVNET_RESTORE();
return (error);
case SIOCIFDESTROY:
Index: sys/net/if_gif.c
===================================================================
--- sys/net/if_gif.c
+++ sys/net/if_gif.c
@@ -898,12 +898,14 @@
break;
case GIFGOPTS:
options = sc->gif_options;
- error = copyout(&options, ifr->ifr_data, sizeof(options));
+ error = copyout(&options, ifr_data_get_ptr(ifr),
+ sizeof(options));
break;
case GIFSOPTS:
if ((error = priv_check(curthread, PRIV_NET_GIF)) != 0)
break;
- error = copyin(ifr->ifr_data, &options, sizeof(options));
+ error = copyin(ifr_data_get_ptr(ifr), &options,
+ sizeof(options));
if (error)
break;
if (options & ~GIF_OPTMASK)
Index: sys/net/if_gre.c
===================================================================
--- sys/net/if_gre.c
+++ sys/net/if_gre.c
@@ -455,7 +455,8 @@
case GRESKEY:
if ((error = priv_check(curthread, PRIV_NET_GRE)) != 0)
break;
- if ((error = copyin(ifr->ifr_data, &opt, sizeof(opt))) != 0)
+ if ((error = copyin(ifr_data_get_ptr(ifr), &opt,
+ sizeof(opt))) != 0)
break;
if (sc->gre_key != opt) {
GRE_WLOCK(sc);
@@ -465,13 +466,14 @@
}
break;
case GREGKEY:
- error = copyout(&sc->gre_key, ifr->ifr_data,
+ error = copyout(&sc->gre_key, ifr_data_get_ptr(ifr),
sizeof(sc->gre_key));
break;
case GRESOPTS:
if ((error = priv_check(curthread, PRIV_NET_GRE)) != 0)
break;
- if ((error = copyin(ifr->ifr_data, &opt, sizeof(opt))) != 0)
+ if ((error = copyin(ifr_data_get_ptr(ifr), &opt,
+ sizeof(opt))) != 0)
break;
if (opt & ~GRE_OPTMASK)
error = EINVAL;
@@ -486,7 +488,7 @@
break;
case GREGOPTS:
- error = copyout(&sc->gre_options, ifr->ifr_data,
+ error = copyout(&sc->gre_options, ifr_data_get_ptr(ifr),
sizeof(sc->gre_options));
break;
default:
Index: sys/net/if_ipsec.c
===================================================================
--- sys/net/if_ipsec.c
+++ sys/net/if_ipsec.c
@@ -688,12 +688,12 @@
break;
case IPSECGREQID:
reqid = sc->reqid;
- error = copyout(&reqid, ifr->ifr_data, sizeof(reqid));
+ error = copyout(&reqid, ifr_data_get_ptr(ifr), sizeof(reqid));
break;
case IPSECSREQID:
if ((error = priv_check(curthread, PRIV_NET_SETIFCAP)) != 0)
break;
- error = copyin(ifr->ifr_data, &reqid, sizeof(reqid));
+ error = copyin(ifr_data_get_ptr(ifr), &reqid, sizeof(reqid));
if (error != 0)
break;
error = ipsec_set_reqid(ifp, reqid);
Index: sys/net/if_spppsubr.c
===================================================================
--- sys/net/if_spppsubr.c
+++ sys/net/if_spppsubr.c
@@ -5058,17 +5058,17 @@
if ((spr = malloc(sizeof(struct spppreq), M_TEMP, M_NOWAIT)) == NULL)
return (EAGAIN);
/*
- * ifr->ifr_data is supposed to point to a struct spppreq.
+ * ifr_data_get_ptr(ifr) is supposed to point to a struct spppreq.
* Check the cmd word first before attempting to fetch all the
* data.
*/
- rv = fueword(ifr->ifr_data, &subcmd);
+ rv = fueword(ifr_data_get_ptr(ifr), &subcmd);
if (rv == -1) {
rv = EFAULT;
goto quit;
}
- if (copyin((caddr_t)ifr->ifr_data, spr, sizeof(struct spppreq)) != 0) {
+ if (copyin(ifr_data_get_ptr(ifr), spr, sizeof(struct spppreq)) != 0) {
rv = EFAULT;
goto quit;
}
@@ -5105,8 +5105,8 @@
* setting it.
*/
spr->defs.lcp.timeout = sp->lcp.timeout * 1000 / hz;
- rv = copyout(spr, (caddr_t)ifr->ifr_data,
- sizeof(struct spppreq));
+ rv = copyout(spr, ifr_data_get_ptr(ifr),
+ sizeof(struct spppreq));
break;
case (u_long)SPPPIOSDEFS:
Index: sys/net/if_var.h
===================================================================
--- sys/net/if_var.h
+++ sys/net/if_var.h
@@ -719,6 +719,9 @@
void if_hw_tsomax_common(if_t ifp, struct ifnet_hw_tsomax *);
int if_hw_tsomax_update(if_t ifp, struct ifnet_hw_tsomax *);
+/* accessors for struct ifreq */
+void *ifr_data_get_ptr(void *ifrp);
+
#ifdef DEVICE_POLLING
enum poll_cmd { POLL_ONLY, POLL_AND_CHECK_STATUS };
Index: sys/net/if_vlan.c
===================================================================
--- sys/net/if_vlan.c
+++ sys/net/if_vlan.c
@@ -1857,7 +1857,7 @@
break;
}
#endif
- error = copyin(ifr->ifr_data, &vlr, sizeof(vlr));
+ error = copyin(ifr_data_get_ptr(ifr), &vlr, sizeof(vlr));
if (error)
break;
if (vlr.vlr_parent[0] == '\0') {
@@ -1888,7 +1888,7 @@
vlr.vlr_tag = ifv->ifv_vid;
}
VLAN_SUNLOCK();
- error = copyout(&vlr, ifr->ifr_data, sizeof(vlr));
+ error = copyout(&vlr, ifr_data_get_ptr(ifr), sizeof(vlr));
break;
case SIOCSIFFLAGS:
Index: sys/net/iflib.c
===================================================================
--- sys/net/iflib.c
+++ sys/net/iflib.c
@@ -3984,7 +3984,7 @@
{
struct ifi2creq i2c;
- err = copyin(ifr->ifr_data, &i2c, sizeof(i2c));
+ err = copyin(ifr_data_get_ptr(ifr), &i2c, sizeof(i2c));
if (err != 0)
break;
if (i2c.dev_addr != 0xA0 && i2c.dev_addr != 0xA2) {
@@ -3997,7 +3997,8 @@
}
if ((err = IFDI_I2C_REQ(ctx, &i2c)) == 0)
- err = copyout(&i2c, ifr->ifr_data, sizeof(i2c));
+ err = copyout(&i2c, ifr_data_get_ptr(ifr),
+ sizeof(i2c));
break;
}
case SIOCSIFCAP:
Index: sys/net80211/ieee80211_ioctl.c
===================================================================
--- sys/net80211/ieee80211_ioctl.c
+++ sys/net80211/ieee80211_ioctl.c
@@ -3567,7 +3567,8 @@
break;
case SIOCG80211STATS:
ifr = (struct ifreq *)data;
- copyout(&vap->iv_stats, ifr->ifr_data, sizeof (vap->iv_stats));
+ copyout(&vap->iv_stats, ifr_data_get_ptr(ifr),
+ sizeof (vap->iv_stats));
break;
case SIOCSIFMTU:
ifr = (struct ifreq *)data;
Index: sys/netinet/ip_carp.c
===================================================================
--- sys/netinet/ip_carp.c
+++ sys/netinet/ip_carp.c
@@ -1708,7 +1708,7 @@
struct carp_softc *sc = NULL;
int error = 0, locked = 0;
- if ((error = copyin(ifr->ifr_data, &carpr, sizeof carpr)))
+ if ((error = copyin(ifr_data_get_ptr(ifr), &carpr, sizeof carpr)))
return (error);
ifp = ifunit_ref(ifr->ifr_name);
@@ -1824,7 +1824,8 @@
break;
}
carp_carprcp(&carpr, sc, priveleged);
- error = copyout(&carpr, ifr->ifr_data, sizeof(carpr));
+ error = copyout(&carpr, ifr_data_get_ptr(ifr),
+ sizeof(carpr));
} else {
int i, count;
@@ -1842,7 +1843,8 @@
IFNET_FOREACH_CARP(ifp, sc) {
carp_carprcp(&carpr, sc, priveleged);
carpr.carpr_count = count;
- error = copyout(&carpr, ifr->ifr_data +
+ error = copyout(&carpr,
+ (caddr_t)ifr_data_get_ptr(ifr) +
(i * sizeof(carpr)), sizeof(carpr));
if (error) {
CIF_UNLOCK(ifp->if_carp);
Index: sys/netpfil/pf/if_pfsync.c
===================================================================
--- sys/netpfil/pf/if_pfsync.c
+++ sys/netpfil/pf/if_pfsync.c
@@ -1319,7 +1319,8 @@
pfsyncr.pfsyncr_defer = (PFSYNCF_DEFER ==
(sc->sc_flags & PFSYNCF_DEFER));
PFSYNC_UNLOCK(sc);
- return (copyout(&pfsyncr, ifr->ifr_data, sizeof(pfsyncr)));
+ return (copyout(&pfsyncr, ifr_data_get_ptr(ifr),
+ sizeof(pfsyncr)));
case SIOCSETPFSYNC:
{
@@ -1330,7 +1331,8 @@
if ((error = priv_check(curthread, PRIV_NETINET_PF)) != 0)
return (error);
- if ((error = copyin(ifr->ifr_data, &pfsyncr, sizeof(pfsyncr))))
+ if ((error = copyin(ifr_data_get_ptr(ifr), &pfsyncr,
+ sizeof(pfsyncr))))
return (error);
if (pfsyncr.pfsyncr_maxupdates > 255)
Index: sys/security/mac/mac_net.c
===================================================================
--- sys/security/mac/mac_net.c
+++ sys/security/mac/mac_net.c
@@ -406,7 +406,7 @@
if (!(mac_labeled & MPC_OBJECT_IFNET))
return (EINVAL);
- error = copyin(ifr->ifr_ifru.ifru_data, &mac, sizeof(mac));
+ error = copyin(ifr_data_get_ptr(ifr), &mac, sizeof(mac));
if (error)
return (error);
@@ -449,7 +449,7 @@
if (!(mac_labeled & MPC_OBJECT_IFNET))
return (EINVAL);
- error = copyin(ifr->ifr_ifru.ifru_data, &mac, sizeof(mac));
+ error = copyin(ifr_data_get_ptr(ifr), &mac, sizeof(mac));
if (error)
return (error);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Apr 22, 3:29 AM (16 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31884114
Default Alt Text
D14900.id40891.diff (27 KB)
Attached To
Mode
D14900: Use an accessor function to access ifr_data.
Attached
Detach File
Event Timeline
Log In to Comment