* [patch -next] qlcnic: underflow in qlcnic_validate_max_tx_rings()
@ 2013-08-27 1:16 Dan Carpenter
2013-08-27 4:25 ` Himanshu Madhani
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Dan Carpenter @ 2013-08-27 1:16 UTC (permalink / raw)
To: Himanshu Madhani
Cc: Rajesh Borundia, Shahed Shaikh, Jitendra Kalsaria, Sony Chacko,
Sucheta Chakraborty, linux-driver, netdev, kernel-janitors
This function checks the upper bound but it doesn't check for negative
numbers:
if (txq > QLCNIC_MAX_TX_RINGS) {
I've solved this by making "txq" a u32 type. I chose that because
->tx_count in the ethtool_channels struct is a __u32.
This bug was added in aa4a1f7df7 ('qlcnic: Enable Tx queue changes using
ethtool for 82xx Series adapter.').
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h b/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
index 3f03856..ae9b444 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
@@ -1537,7 +1537,7 @@ int qlcnic_diag_alloc_res(struct net_device *netdev, int test);
netdev_tx_t qlcnic_xmit_frame(struct sk_buff *skb, struct net_device *netdev);
int qlcnic_set_max_rss(struct qlcnic_adapter *, u8, int);
int qlcnic_validate_max_rss(struct qlcnic_adapter *, __u32);
-int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *, int);
+int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *, u32 txq);
void qlcnic_alloc_lb_filters_mem(struct qlcnic_adapter *adapter);
void qlcnic_82xx_set_mac_filter_count(struct qlcnic_adapter *);
int qlcnic_enable_msix(struct qlcnic_adapter *, u32);
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 8321d1a..88e3c97 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -3524,7 +3524,7 @@ qlcnicvf_start_firmware(struct qlcnic_adapter *adapter)
return err;
}
-int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *adapter, int txq)
+int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *adapter, u32 txq)
{
struct net_device *netdev = adapter->netdev;
u8 max_hw = QLCNIC_MAX_TX_RINGS;
^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: [patch -next] qlcnic: underflow in qlcnic_validate_max_tx_rings()
2013-08-27 1:16 [patch -next] qlcnic: underflow in qlcnic_validate_max_tx_rings() Dan Carpenter
@ 2013-08-27 4:25 ` Himanshu Madhani
2013-08-27 4:40 ` Himanshu Madhani
2013-08-29 5:24 ` David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Himanshu Madhani @ 2013-08-27 4:25 UTC (permalink / raw)
To: Dan Carpenter
Cc: Rajesh Borundia, Shahed Shaikh, Jitendra Kalsaria, Sony Chacko,
Sucheta Chakraborty, Dept-Eng Linux Driver, netdev,
kernel-janitors@vger.kernel.org
________________________________________
From: Dan Carpenter [dan.carpenter@oracle.com]
Sent: Monday, August 26, 2013 6:16 PM
To: Himanshu Madhani
Cc: Rajesh Borundia; Shahed Shaikh; Jitendra Kalsaria; Sony Chacko; Sucheta Chakraborty; Dept-Eng Linux Driver; netdev; kernel-janitors@vger.kernel.org
Subject: [patch -next] qlcnic: underflow in qlcnic_validate_max_tx_rings()
This function checks the upper bound but it doesn't check for negative
numbers:
if (txq > QLCNIC_MAX_TX_RINGS) {
I've solved this by making "txq" a u32 type. I chose that because
->tx_count in the ethtool_channels struct is a __u32.
This bug was added in aa4a1f7df7 ('qlcnic: Enable Tx queue changes using
ethtool for 82xx Series adapter.').
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h b/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
index 3f03856..ae9b444 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
@@ -1537,7 +1537,7 @@ int qlcnic_diag_alloc_res(struct net_device *netdev, int test);
netdev_tx_t qlcnic_xmit_frame(struct sk_buff *skb, struct net_device *netdev);
int qlcnic_set_max_rss(struct qlcnic_adapter *, u8, int);
int qlcnic_validate_max_rss(struct qlcnic_adapter *, __u32);
-int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *, int);
+int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *, u32 txq);
void qlcnic_alloc_lb_filters_mem(struct qlcnic_adapter *adapter);
void qlcnic_82xx_set_mac_filter_count(struct qlcnic_adapter *);
int qlcnic_enable_msix(struct qlcnic_adapter *, u32);
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 8321d1a..88e3c97 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -3524,7 +3524,7 @@ qlcnicvf_start_firmware(struct qlcnic_adapter *adapter)
return err;
}
-int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *adapter, int txq)
+int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *adapter, u32 txq)
{
struct net_device *netdev = adapter->netdev;
u8 max_hw = QLCNIC_MAX_TX_RINGS;
Thanks
Acked-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: [patch -next] qlcnic: underflow in qlcnic_validate_max_tx_rings()
2013-08-27 1:16 [patch -next] qlcnic: underflow in qlcnic_validate_max_tx_rings() Dan Carpenter
2013-08-27 4:25 ` Himanshu Madhani
@ 2013-08-27 4:40 ` Himanshu Madhani
2013-08-29 5:24 ` David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Himanshu Madhani @ 2013-08-27 4:40 UTC (permalink / raw)
To: Dan Carpenter
Cc: Rajesh Borundia, Shahed Shaikh, Jitendra Kalsaria, Sony Chacko,
Sucheta Chakraborty, Dept-Eng Linux Driver, netdev,
kernel-janitors@vger.kernel.org
> -----Original Message-----
> From: Dan Carpenter [mailto:dan.carpenter@oracle.com]
> Sent: Monday, August 26, 2013 6:16 PM
> To: Himanshu Madhani
> Cc: Rajesh Borundia; Shahed Shaikh; Jitendra Kalsaria; Sony Chacko; Sucheta
> Chakraborty; Dept-Eng Linux Driver; netdev; kernel-janitors@vger.kernel.org
> Subject: [patch -next] qlcnic: underflow in qlcnic_validate_max_tx_rings()
>
> This function checks the upper bound but it doesn't check for negative
> numbers:
>
> if (txq > QLCNIC_MAX_TX_RINGS) {
>
> I've solved this by making "txq" a u32 type. I chose that because
> ->tx_count in the ethtool_channels struct is a __u32.
>
> This bug was added in aa4a1f7df7 ('qlcnic: Enable Tx queue changes using
> ethtool for 82xx Series adapter.').
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
> b/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
> index 3f03856..ae9b444 100644
> --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
> +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
> @@ -1537,7 +1537,7 @@ int qlcnic_diag_alloc_res(struct net_device
> *netdev, int test); netdev_tx_t qlcnic_xmit_frame(struct sk_buff *skb,
> struct net_device *netdev); int qlcnic_set_max_rss(struct qlcnic_adapter *,
> u8, int); int qlcnic_validate_max_rss(struct qlcnic_adapter *, __u32); -int
> qlcnic_validate_max_tx_rings(struct qlcnic_adapter *, int);
> +int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *, u32 txq);
> void qlcnic_alloc_lb_filters_mem(struct qlcnic_adapter *adapter); void
> qlcnic_82xx_set_mac_filter_count(struct qlcnic_adapter *); int
> qlcnic_enable_msix(struct qlcnic_adapter *, u32); diff --git
> a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
> b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
> index 8321d1a..88e3c97 100644
> --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
> +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
> @@ -3524,7 +3524,7 @@ qlcnicvf_start_firmware(struct qlcnic_adapter
> *adapter)
> return err;
> }
>
> -int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *adapter, int txq)
> +int qlcnic_validate_max_tx_rings(struct qlcnic_adapter *adapter, u32
> +txq)
> {
> struct net_device *netdev = adapter->netdev;
> u8 max_hw = QLCNIC_MAX_TX_RINGS;
Thanks
Acked-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [patch -next] qlcnic: underflow in qlcnic_validate_max_tx_rings()
2013-08-27 1:16 [patch -next] qlcnic: underflow in qlcnic_validate_max_tx_rings() Dan Carpenter
2013-08-27 4:25 ` Himanshu Madhani
2013-08-27 4:40 ` Himanshu Madhani
@ 2013-08-29 5:24 ` David Miller
2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2013-08-29 5:24 UTC (permalink / raw)
To: dan.carpenter
Cc: himanshu.madhani, rajesh.borundia, shahed.shaikh,
jitendra.kalsaria, sony.chacko, sucheta.chakraborty, linux-driver,
netdev, kernel-janitors
From: Dan Carpenter <dan.carpenter@oracle.com>
Date: Tue, 27 Aug 2013 04:16:22 +0300
> This function checks the upper bound but it doesn't check for negative
> numbers:
>
> if (txq > QLCNIC_MAX_TX_RINGS) {
>
> I've solved this by making "txq" a u32 type. I chose that because
> ->tx_count in the ethtool_channels struct is a __u32.
>
> This bug was added in aa4a1f7df7 ('qlcnic: Enable Tx queue changes using
> ethtool for 82xx Series adapter.').
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Applied, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-08-29 5:24 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-27 1:16 [patch -next] qlcnic: underflow in qlcnic_validate_max_tx_rings() Dan Carpenter
2013-08-27 4:25 ` Himanshu Madhani
2013-08-27 4:40 ` Himanshu Madhani
2013-08-29 5:24 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).