aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c15
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c15
2 files changed, 30 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index ad8a348b1c81..9c40742727a2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1702,6 +1702,9 @@ static void iwl_print_event_log(struct iwl_priv *priv, u32 start_idx,
1702 } 1702 }
1703} 1703}
1704 1704
1705/* For sanity check only. Actual size is determined by uCode, typ. 512 */
1706#define MAX_EVENT_LOG_SIZE (512)
1707
1705void iwl_dump_nic_event_log(struct iwl_priv *priv) 1708void iwl_dump_nic_event_log(struct iwl_priv *priv)
1706{ 1709{
1707 u32 base; /* SRAM byte address of event log header */ 1710 u32 base; /* SRAM byte address of event log header */
@@ -1727,6 +1730,18 @@ void iwl_dump_nic_event_log(struct iwl_priv *priv)
1727 num_wraps = iwl_read_targ_mem(priv, base + (2 * sizeof(u32))); 1730 num_wraps = iwl_read_targ_mem(priv, base + (2 * sizeof(u32)));
1728 next_entry = iwl_read_targ_mem(priv, base + (3 * sizeof(u32))); 1731 next_entry = iwl_read_targ_mem(priv, base + (3 * sizeof(u32)));
1729 1732
1733 if (capacity > MAX_EVENT_LOG_SIZE) {
1734 IWL_ERR(priv, "Log capacity %d is bogus, limit to %d entries\n",
1735 capacity, MAX_EVENT_LOG_SIZE);
1736 capacity = MAX_EVENT_LOG_SIZE;
1737 }
1738
1739 if (next_entry > MAX_EVENT_LOG_SIZE) {
1740 IWL_ERR(priv, "Log write index %d is bogus, limit to %d\n",
1741 next_entry, MAX_EVENT_LOG_SIZE);
1742 next_entry = MAX_EVENT_LOG_SIZE;
1743 }
1744
1730 size = num_wraps ? capacity : next_entry; 1745 size = num_wraps ? capacity : next_entry;
1731 1746
1732 /* bail out if nothing in log */ 1747 /* bail out if nothing in log */
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 23b31e6dcacd..a17afe01c0c0 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -1603,6 +1603,9 @@ static void iwl3945_print_event_log(struct iwl_priv *priv, u32 start_idx,
1603 } 1603 }
1604} 1604}
1605 1605
1606/* For sanity check only. Actual size is determined by uCode, typ. 512 */
1607#define IWL3945_MAX_EVENT_LOG_SIZE (512)
1608
1606void iwl3945_dump_nic_event_log(struct iwl_priv *priv) 1609void iwl3945_dump_nic_event_log(struct iwl_priv *priv)
1607{ 1610{
1608 u32 base; /* SRAM byte address of event log header */ 1611 u32 base; /* SRAM byte address of event log header */
@@ -1624,6 +1627,18 @@ void iwl3945_dump_nic_event_log(struct iwl_priv *priv)
1624 num_wraps = iwl_read_targ_mem(priv, base + (2 * sizeof(u32))); 1627 num_wraps = iwl_read_targ_mem(priv, base + (2 * sizeof(u32)));
1625 next_entry = iwl_read_targ_mem(priv, base + (3 * sizeof(u32))); 1628 next_entry = iwl_read_targ_mem(priv, base + (3 * sizeof(u32)));
1626 1629
1630 if (capacity > IWL3945_MAX_EVENT_LOG_SIZE) {
1631 IWL_ERR(priv, "Log capacity %d is bogus, limit to %d entries\n",
1632 capacity, IWL3945_MAX_EVENT_LOG_SIZE);
1633 capacity = IWL3945_MAX_EVENT_LOG_SIZE;
1634 }
1635
1636 if (next_entry > IWL3945_MAX_EVENT_LOG_SIZE) {
1637 IWL_ERR(priv, "Log write index %d is bogus, limit to %d\n",
1638 next_entry, IWL3945_MAX_EVENT_LOG_SIZE);
1639 next_entry = IWL3945_MAX_EVENT_LOG_SIZE;
1640 }
1641
1627 size = num_wraps ? capacity : next_entry; 1642 size = num_wraps ? capacity : next_entry;
1628 1643
1629 /* bail out if nothing in log */ 1644 /* bail out if nothing in log */