Subject: Re: [PATCH] netfilter: Fix compiler warning.

From: Eric Dumazet <[email-masked]>
Date: Thu, 10 Dec 2009 05:25:36 +0100

Le 10/12/2009 02:25, [email-masked] a écrit :
> Fix compiler warning "discards qualifiers from pointer target type".
> The function prototype defines parameters as pointer to a constant.
> Such parameters should not have their content modified in the
> function.
> 
> Signed-off-by: Laurent Chavey <[email-masked]>

This is not the right fix IMHO.

We want an unique timestamp for the whole netfilter matches, because several 'time' rules
could get 'interesting' effects.

The 'const' attribute is a debugging aid, and the skb->tstamp 'write-once' is a valid exception.

Read again the comment in time_mt() :

vi +163 net/netfilter/xt_time.c

static bool
time_mt(const struct sk_buff *skb, const struct xt_match_param *par)
{
        const struct xt_time_info *info = par->matchinfo;
        unsigned int packet_time;
        struct xtm current_time;
        s64 stamp;

        /*
         * We cannot use get_seconds() instead of __net_timestamp() here.
         * Suppose you have two rules:
         *      1. match before 13:00
         *      2. match after 13:00
         * If you match against processing time (get_seconds) it
         * may happen that the same packet matches both rules if
         * it arrived at the right moment before 13:00.
         */
        if (skb->tstamp.tv64 == 0)
                __net_timestamp((struct sk_buff *)skb);