blob: e78fe3659759f4cb0116e6ff1a51a3943fa27319 [file] [log] [blame]
/* Reduced from -Wanalyzer-exposure-through-uninit-copy false positives
seen in Linux kernel in drivers/net/ethernet/intel/ice/ice_ptp.c */
/* { dg-do compile } */
/* { dg-options "-fanalyzer" } */
/* { dg-require-effective-target analyzer } */
extern unsigned long
copy_from_user(void* to, const void* from, unsigned long n);
extern unsigned long
copy_to_user(void* to, const void* from, unsigned long n);
struct ifreq
{
union
{
void* ifru_data;
} ifr_ifru;
};
struct hwtstamp_config
{
int flags;
int tx_type;
int rx_filter;
};
struct ice_ptp
{
long placeholder;
struct hwtstamp_config tstamp_config;
};
struct ice_pf
{
struct ice_ptp ptp;
};
int
ice_ptp_set_ts_config(struct ice_pf* pf, struct ifreq* ifr)
{
struct hwtstamp_config config;
int err;
if (copy_from_user(&config, ifr->ifr_ifru.ifru_data, sizeof(config)))
return -14;
pf->ptp.tstamp_config.tx_type = 0;
pf->ptp.tstamp_config.rx_filter = 0;
config = pf->ptp.tstamp_config;
if (copy_to_user(ifr->ifr_ifru.ifru_data, &config, sizeof(config))) /* { dg-bogus "-Wanalyzer-exposure-through-uninit-copy" "PR analyzer/112969" } */
return -14;
return 0;
}