diff options
| author | Denis Kirjanov <dkirjanov@hera.kernel.org> | 2010-05-23 01:45:45 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-05-24 02:11:07 -0400 |
| commit | a6c0f8217c17d46da22fa56923f3cbd03615cb7c (patch) | |
| tree | 32eacbe6529f885b858cd39e70b6b989eb090f88 | |
| parent | 418c437d8b4b87815f3afed89da2aa0078d5379d (diff) | |
ieee802154: Fix possible NULL pointer dereference in wpan_phy_alloc
Check for NULL pointer after kzalloc
Signed-off-by: Denis Kirjanov <dkirjanov@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | net/ieee802154/wpan-class.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/ieee802154/wpan-class.c b/net/ieee802154/wpan-class.c index 3d803a1b9fb6..1627ef2e8522 100644 --- a/net/ieee802154/wpan-class.c +++ b/net/ieee802154/wpan-class.c | |||
| @@ -147,13 +147,15 @@ struct wpan_phy *wpan_phy_alloc(size_t priv_size) | |||
| 147 | struct wpan_phy *phy = kzalloc(sizeof(*phy) + priv_size, | 147 | struct wpan_phy *phy = kzalloc(sizeof(*phy) + priv_size, |
| 148 | GFP_KERNEL); | 148 | GFP_KERNEL); |
| 149 | 149 | ||
| 150 | if (!phy) | ||
| 151 | goto out; | ||
| 150 | mutex_lock(&wpan_phy_mutex); | 152 | mutex_lock(&wpan_phy_mutex); |
| 151 | phy->idx = wpan_phy_idx++; | 153 | phy->idx = wpan_phy_idx++; |
| 152 | if (unlikely(!wpan_phy_idx_valid(phy->idx))) { | 154 | if (unlikely(!wpan_phy_idx_valid(phy->idx))) { |
| 153 | wpan_phy_idx--; | 155 | wpan_phy_idx--; |
| 154 | mutex_unlock(&wpan_phy_mutex); | 156 | mutex_unlock(&wpan_phy_mutex); |
| 155 | kfree(phy); | 157 | kfree(phy); |
| 156 | return NULL; | 158 | goto out; |
| 157 | } | 159 | } |
| 158 | mutex_unlock(&wpan_phy_mutex); | 160 | mutex_unlock(&wpan_phy_mutex); |
| 159 | 161 | ||
| @@ -168,6 +170,9 @@ struct wpan_phy *wpan_phy_alloc(size_t priv_size) | |||
| 168 | phy->current_page = 0; /* for compatibility */ | 170 | phy->current_page = 0; /* for compatibility */ |
| 169 | 171 | ||
| 170 | return phy; | 172 | return phy; |
| 173 | |||
| 174 | out: | ||
| 175 | return NULL; | ||
| 171 | } | 176 | } |
| 172 | EXPORT_SYMBOL(wpan_phy_alloc); | 177 | EXPORT_SYMBOL(wpan_phy_alloc); |
| 173 | 178 | ||
