| From 154d4899e4111ae24e68d6ba955f46856cb046bc Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Date: Sat, 30 Mar 2019 10:31:52 +0100 |
| Subject: iwlwifi: mvm: properly check debugfs dentry before using it |
| |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| commit 154d4899e4111ae24e68d6ba955f46856cb046bc upstream. |
| |
| debugfs can now report an error code if something went wrong instead of |
| just NULL. So if the return value is to be used as a "real" dentry, it |
| needs to be checked if it is an error before dereferencing it. |
| |
| This is now happening because of ff9fb72bc077 ("debugfs: return error |
| values, not NULL"). If multiple iwlwifi devices are in the system, this |
| can cause problems when the driver attempts to create the main debugfs |
| directory again. Later on in the code we fail horribly by trying to |
| dereference a pointer that is an error value. |
| |
| Reported-by: Laura Abbott <labbott@redhat.com> |
| Reported-by: Gabriel Ramirez <gabriello.ramirez@gmail.com> |
| Cc: Johannes Berg <johannes.berg@intel.com> |
| Cc: Emmanuel Grumbach <emmanuel.grumbach@intel.com> |
| Cc: Luca Coelho <luciano.coelho@intel.com> |
| Cc: Intel Linux Wireless <linuxwifi@intel.com> |
| Cc: Kalle Valo <kvalo@codeaurora.org> |
| Cc: stable <stable@vger.kernel.org> # 5.0 |
| Signed-off-by: Luca Coelho <luciano.coelho@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| --- a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c |
| +++ b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c |
| @@ -1482,6 +1482,11 @@ void iwl_mvm_vif_dbgfs_register(struct i |
| return; |
| |
| mvmvif->dbgfs_dir = debugfs_create_dir("iwlmvm", dbgfs_dir); |
| + if (IS_ERR_OR_NULL(mvmvif->dbgfs_dir)) { |
| + IWL_ERR(mvm, "Failed to create debugfs directory under %pd\n", |
| + dbgfs_dir); |
| + return; |
| + } |
| |
| if (!mvmvif->dbgfs_dir) { |
| IWL_ERR(mvm, "Failed to create debugfs directory under %pd\n", |