/* 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; }