From: Simon Horman <horms@kernel.org>
To: Karol Kolacinski <karol.kolacinski@intel.com>
Cc: Jacob Keller <jacob.e.keller@intel.com>,
netdev@vger.kernel.org, anthony.l.nguyen@intel.com,
intel-wired-lan@lists.osuosl.org, przemyslaw.kitszel@intel.com
Subject: Re: [Intel-wired-lan] [PATCH iwl-net 3/3] ice: Reject pin requests with unsupported flags
Date: Wed, 19 Jun 2024 17:44:29 +0100 [thread overview]
Message-ID: <20240619164429.GL690967@kernel.org> (raw)
In-Reply-To: <20240618104310.1429515-4-karol.kolacinski@intel.com>
On Tue, Jun 18, 2024 at 12:41:38PM +0200, Karol Kolacinski wrote:
> From: Jacob Keller <jacob.e.keller@intel.com>
>
> The driver receives requests for configuring pins via the .enable
> callback of the PTP clock object. These requests come into the driver
> with flags which modify the requested behavior from userspace. Current
> implementation in ice does not reject flags that it doesn't support.
> This causes the driver to incorrectly apply requests with such flags as
> PTP_PEROUT_DUTY_CYCLE, or any future flags added by the kernel which it
> is not yet aware of.
>
> Fix this by properly validating flags in both ice_ptp_cfg_perout and
> ice_ptp_cfg_extts. Ensure that we check by bit-wise negating supported
> flags rather than just checking and rejecting known un-supported flags.
> This is preferable, as it ensures better compatibility with future
> kernels.
>
> Fixes: 172db5f91d5f ("ice: add support for auxiliary input/output pins")
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
> Signed-off-by: Karol Kolacinski <karol.kolacinski@intel.com>
Hi Jacob and Karol,
Some minor feedback from my side.
...
> diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c
> index b952cad42f92..5fa377786f4c 100644
> --- a/drivers/net/ethernet/intel/ice/ice_ptp.c
> +++ b/drivers/net/ethernet/intel/ice/ice_ptp.c
> @@ -1591,14 +1591,23 @@ void ice_ptp_extts_event(struct ice_pf *pf)
> * @store: If set to true, the values will be stored
> *
> * Configure an external timestamp event on the requested channel.
> - */
> -static void ice_ptp_cfg_extts(struct ice_pf *pf, unsigned int chan,
> - struct ice_extts_channel *config, bool store)
> + *
> + * Return: 0 on sucess, -EOPNOTUSPP on unsupported flags
nit: success
Flagged by checkpatch.pl --codespell
> + */
> +static int ice_ptp_cfg_extts(struct ice_pf *pf, unsigned int chan,
> + struct ice_extts_channel *config, bool store)
> {
> u32 func, aux_reg, gpio_reg, irq_reg;
> struct ice_hw *hw = &pf->hw;
> u8 tmr_idx;
>
> + /* Reject requests with unsupported flags */
> + if (config->flags & ~(PTP_ENABLE_FEATURE |
> + PTP_RISING_EDGE |
> + PTP_FALLING_EDGE |
> + PTP_STRICT_FLAGS))
> + return -EOPNOTSUPP;
The line above should to be indented one more tab.
Clearly this makes no difference at run-time,
but it takes a while (for me) to parse things as-is.
...
> @@ -1697,6 +1708,9 @@ static int ice_ptp_cfg_clkout(struct ice_pf *pf, unsigned int chan,
> u32 func, val, gpio_pin;
> u8 tmr_idx;
>
> + if (config->flags & ~PTP_PEROUT_PHASE)
> + return -EOPNOTSUPP;
A little further down in this function it is assumed that config may
be NULL. So I think the code above needs to be updated to take that
into account too.
Flagged by Smatch.
...
WARNING: multiple messages have this Message-ID (diff)
From: Simon Horman <horms@kernel.org>
To: Karol Kolacinski <karol.kolacinski@intel.com>
Cc: intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org,
anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com,
Jacob Keller <jacob.e.keller@intel.com>
Subject: Re: [PATCH iwl-net 3/3] ice: Reject pin requests with unsupported flags
Date: Wed, 19 Jun 2024 17:44:29 +0100 [thread overview]
Message-ID: <20240619164429.GL690967@kernel.org> (raw)
In-Reply-To: <20240618104310.1429515-4-karol.kolacinski@intel.com>
On Tue, Jun 18, 2024 at 12:41:38PM +0200, Karol Kolacinski wrote:
> From: Jacob Keller <jacob.e.keller@intel.com>
>
> The driver receives requests for configuring pins via the .enable
> callback of the PTP clock object. These requests come into the driver
> with flags which modify the requested behavior from userspace. Current
> implementation in ice does not reject flags that it doesn't support.
> This causes the driver to incorrectly apply requests with such flags as
> PTP_PEROUT_DUTY_CYCLE, or any future flags added by the kernel which it
> is not yet aware of.
>
> Fix this by properly validating flags in both ice_ptp_cfg_perout and
> ice_ptp_cfg_extts. Ensure that we check by bit-wise negating supported
> flags rather than just checking and rejecting known un-supported flags.
> This is preferable, as it ensures better compatibility with future
> kernels.
>
> Fixes: 172db5f91d5f ("ice: add support for auxiliary input/output pins")
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
> Signed-off-by: Karol Kolacinski <karol.kolacinski@intel.com>
Hi Jacob and Karol,
Some minor feedback from my side.
...
> diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c
> index b952cad42f92..5fa377786f4c 100644
> --- a/drivers/net/ethernet/intel/ice/ice_ptp.c
> +++ b/drivers/net/ethernet/intel/ice/ice_ptp.c
> @@ -1591,14 +1591,23 @@ void ice_ptp_extts_event(struct ice_pf *pf)
> * @store: If set to true, the values will be stored
> *
> * Configure an external timestamp event on the requested channel.
> - */
> -static void ice_ptp_cfg_extts(struct ice_pf *pf, unsigned int chan,
> - struct ice_extts_channel *config, bool store)
> + *
> + * Return: 0 on sucess, -EOPNOTUSPP on unsupported flags
nit: success
Flagged by checkpatch.pl --codespell
> + */
> +static int ice_ptp_cfg_extts(struct ice_pf *pf, unsigned int chan,
> + struct ice_extts_channel *config, bool store)
> {
> u32 func, aux_reg, gpio_reg, irq_reg;
> struct ice_hw *hw = &pf->hw;
> u8 tmr_idx;
>
> + /* Reject requests with unsupported flags */
> + if (config->flags & ~(PTP_ENABLE_FEATURE |
> + PTP_RISING_EDGE |
> + PTP_FALLING_EDGE |
> + PTP_STRICT_FLAGS))
> + return -EOPNOTSUPP;
The line above should to be indented one more tab.
Clearly this makes no difference at run-time,
but it takes a while (for me) to parse things as-is.
...
> @@ -1697,6 +1708,9 @@ static int ice_ptp_cfg_clkout(struct ice_pf *pf, unsigned int chan,
> u32 func, val, gpio_pin;
> u8 tmr_idx;
>
> + if (config->flags & ~PTP_PEROUT_PHASE)
> + return -EOPNOTSUPP;
A little further down in this function it is assumed that config may
be NULL. So I think the code above needs to be updated to take that
into account too.
Flagged by Smatch.
...
next prev parent reply other threads:[~2024-06-19 16:44 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-18 10:41 [Intel-wired-lan] [PATCH iwl-net 0/3] ice: Fix incorrect input/output pin behavior Karol Kolacinski
2024-06-18 10:41 ` Karol Kolacinski
2024-06-18 10:41 ` [Intel-wired-lan] [PATCH iwl-net 1/3] ice: Fix improper extts handling Karol Kolacinski
2024-06-18 10:41 ` Karol Kolacinski
2024-06-19 16:42 ` [Intel-wired-lan] " Simon Horman
2024-06-19 16:42 ` Simon Horman
2024-06-18 10:41 ` [Intel-wired-lan] [PATCH iwl-net 2/3] ice: Don't process extts if PTP is disabled Karol Kolacinski
2024-06-18 10:41 ` Karol Kolacinski
2024-06-19 16:40 ` [Intel-wired-lan] " Simon Horman
2024-06-19 16:40 ` Simon Horman
2024-07-08 22:50 ` [Intel-wired-lan] " Keller, Jacob E
2024-07-08 22:50 ` Keller, Jacob E
2024-06-18 10:41 ` [Intel-wired-lan] [PATCH iwl-net 3/3] ice: Reject pin requests with unsupported flags Karol Kolacinski
2024-06-18 10:41 ` Karol Kolacinski
2024-06-19 16:44 ` Simon Horman [this message]
2024-06-19 16:44 ` Simon Horman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240619164429.GL690967@kernel.org \
--to=horms@kernel.org \
--cc=anthony.l.nguyen@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=jacob.e.keller@intel.com \
--cc=karol.kolacinski@intel.com \
--cc=netdev@vger.kernel.org \
--cc=przemyslaw.kitszel@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.