Subject: Re: [PATCH net 4/6] stmmac: Validate hwtstamp_config completely before applying it

From: Giuseppe CAVALLARO <[email-masked]>
Date: Tue, 19 Nov 2013 06:26:07 +0100

On 11/14/2013 1:44 AM, Ben Hutchings wrote:
> stmmac_hwtstamp_ioctl() should validate all fields of hwtstamp_config
> before making any changes.  Currently it sets the TX configuration
> before validating the rx_filter field.
>
> Compile-tested only.

Thx Ben for this patch.

Rayagond, can you do any run-time tests?

peppe

>
> Signed-off-by: Ben Hutchings <[email-masked]>
> ---
>   drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 12 +++---------
>   1 file changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 8d4ccd35a016..8a7a23a84ac5 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -435,16 +435,9 @@ static int stmmac_hwtstamp_ioctl(struct net_device *dev, struct ifreq *ifr)
>   	if (config.flags)
>   		return -EINVAL;
>
> -	switch (config.tx_type) {
> -	case HWTSTAMP_TX_OFF:
> -		priv->hwts_tx_en = 0;
> -		break;
> -	case HWTSTAMP_TX_ON:
> -		priv->hwts_tx_en = 1;
> -		break;
> -	default:
> +	if (config.tx_type != HWTSTAMP_TX_OFF &&
> +	    config.tx_type != HWTSTAMP_TX_ON)
>   		return -ERANGE;
> -	}
>
>   	if (priv->adv_ts) {
>   		switch (config.rx_filter) {
> @@ -576,6 +569,7 @@ static int stmmac_hwtstamp_ioctl(struct net_device *dev, struct ifreq *ifr)
>   		}
>   	}
>   	priv->hwts_rx_en = ((config.rx_filter == HWTSTAMP_FILTER_NONE) ? 0 : 1);
> +	priv->hwts_tx_en = config.tx_type == HWTSTAMP_TX_ON;
>
>   	if (!priv->hwts_tx_en && !priv->hwts_rx_en)
>   		priv->hw->ptp->config_hw_tstamping(priv->ioaddr, 0);
>
>