Hello. In article <[EMAIL PROTECTED]> (at Wed, 25 Jan 2006 09:13:26 -0800), "Kris Katterjohn" <[EMAIL PROTECTED]> says:
> + > + case PACKET_ACCUMULATE_STATISTICS: > + { > + int val; > + > + if (optlen != sizeof(val)) > + return -EINVAL; I think this is too strict. if (optlen < sizeof(val)) return -EINVAL; if (optlen > sizeof(val)) optlen = sizeof(val); > + if (copy_from_user(&val, optval, optlen)) > + return -EFAULT; > + > + po->accumulate_stats = !!val; > + return 0; > + } > + > + case PACKET_STATISTICS: > + spin_lock_bh(&sk->sk_receive_queue.lock); > + memset(&po->stats, 0, sizeof(po->stats)); > + spin_unlock_bh(&sk->sk_receive_queue.lock); > + return 0; > + > #ifdef CONFIG_PACKET_MMAP > case PACKET_RX_RING: > { > @@ -1399,6 +1425,15 @@ static int packet_getsockopt(struct sock > return -EINVAL; > > switch(optname) { > + case PACKET_ACCUMULATE_STATISTICS: > + { > + if (len != sizeof(po->accumulate_stats)) > + return -EINVAL; This does not conform to POSIX. if (len > sizeof(po->accumulate_stats)) len = sizeof(po->accumulate_stats); Otherwise, it seems fine to me. Signed-off-by: YOSHIFUJI Hideaki <[EMAIL PROTECTED]> -- YOSHIFUJI Hideaki @ USAGI Project <[EMAIL PROTECTED]> GPG-FP : 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html