From patchwork Tue Jan 17 22:22:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 9522187 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0D82F6020B for ; Tue, 17 Jan 2017 23:25:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0496428510 for ; Tue, 17 Jan 2017 23:25:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id ED96028534; Tue, 17 Jan 2017 23:25:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.4 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7B7B528510 for ; Tue, 17 Jan 2017 23:25:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751386AbdAQXZw (ORCPT ); Tue, 17 Jan 2017 18:25:52 -0500 Received: from mail-pf0-f181.google.com ([209.85.192.181]:36570 "EHLO mail-pf0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751391AbdAQXYT (ORCPT ); Tue, 17 Jan 2017 18:24:19 -0500 Received: by mail-pf0-f181.google.com with SMTP id 189so65494706pfu.3 for ; Tue, 17 Jan 2017 15:23:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20150623.gappssmtp.com; s=20150623; h=to:cc:from:subject:message-id:date:user-agent:mime-version :content-transfer-encoding; bh=iXJ3cpj17AhDrDK3mew2LLzOpcd0ZfYXiwwdSrcX8KQ=; b=KAYH9zYRTy3kPK2CglDUSaveEF3nPIn/G2mhvFzSTWvUxTbVKevY/qXFMOfQ2ROynq bNPwTR4Z4/58pGpCcZbdwwCrPk3oVZAPPFBzIWMVoSyygm/tejNZSW23qt1pwgMzj1hV OtW9TmylgnLw147QM9usJLTt1+24tOa1QbcqzkV/Pc5SfF54l8HjA/U65LjjtBI9vUfY 0e0xmD70ZlGCwBDCCt/VZLiAVqU+yK21plY2bC/7Gpv/FTklYPS9Cax90LQltM919IP2 7rTvgvXjhzxlqXRgylUvM5wJErVM9RLiMkO2nmJfdHojvl/ffishXD/gme0FzVRWoS1P 9iVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:cc:from:subject:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=iXJ3cpj17AhDrDK3mew2LLzOpcd0ZfYXiwwdSrcX8KQ=; b=misDJIjBR9BjKMy1/ek6YsSJ+nt/i8DtX/lW4OsdzcQ8nGUqA1O6yKpVEhN9YcqXod Mx3SnlxUG0rQX8WqbVGRw2OUjI8tXgCU2MUZ1UD/LNXhdAAy9C5MYxJh1jbkHJ+0XzJA ov0ELEhKTMzjs9BNeP/YTKaCshucNi4Dun3EambTea7hYdyF6gKUVhr8KNCaH/r58+Ng mtitMaEO2B9N6ZZv2UJhimvXAbW8FYXVQocrPPWhvk1ygJet40fLcNX++weIbO7/ZH7O q6LeFugsYu4r99mheYw13zC1H76aM61Rrs+lN25hw4UWtTsm3QaoxYKrXJc+79KgEVzc F0AA== X-Gm-Message-State: AIkVDXJBpHd8lLbnqOflE2a/9Ixrm9M3jsz8xPV7RuZY02vD49FDUmMn7WMcsPV265rOLQ== X-Received: by 10.99.188.2 with SMTP id q2mr49014342pge.34.1484691745787; Tue, 17 Jan 2017 14:22:25 -0800 (PST) Received: from ?IPv6:2620:10d:c082:1e05:c473:107e:6b13:4d75? ([2620:10d:c090:200::8:c514]) by smtp.gmail.com with ESMTPSA id x81sm58073196pff.69.2017.01.17.14.22.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 Jan 2017 14:22:25 -0800 (PST) To: Johannes Berg Cc: linux-wireless@vger.kernel.org From: Jens Axboe Subject: iwlwifi: fix kernel crash when unregistering thermal zone Message-ID: Date: Tue, 17 Jan 2017 14:22:24 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP A recent firmware change seems to have enabled thermal zones on the iwlwifi driver. Unfortunately, my device fails when registering the thermal zone. This doesn't stop the driver from attempting to unregister the thermal zone at unload time, triggering a NULL pointer deference in strlen() off the thermal_zone_device_unregister() path. Don't unregister if name is NULL, for that case we failed registering. Do the same for the cooling zone. Signed-off-by: Jens Axboe --- Would be great if this could go into the current series, as sometimes I have to reload the driver. Right now I can't, since it crashes... diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c index 63a051be832e..bec7d9c46087 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c @@ -843,8 +843,10 @@ static void iwl_mvm_thermal_zone_unregister(struct iwl_mvm *mvm) return; IWL_DEBUG_TEMP(mvm, "Thermal zone device unregister\n"); - thermal_zone_device_unregister(mvm->tz_device.tzone); - mvm->tz_device.tzone = NULL; + if (mvm->tz_device.tzone) { + thermal_zone_device_unregister(mvm->tz_device.tzone); + mvm->tz_device.tzone = NULL; + } } static void iwl_mvm_cooling_device_unregister(struct iwl_mvm *mvm) @@ -853,8 +855,10 @@ static void iwl_mvm_cooling_device_unregister(struct iwl_mvm *mvm) return; IWL_DEBUG_TEMP(mvm, "Cooling device unregister\n"); - thermal_cooling_device_unregister(mvm->cooling_dev.cdev); - mvm->cooling_dev.cdev = NULL; + if (mvm->cooling_dev.cdev) { + thermal_cooling_device_unregister(mvm->cooling_dev.cdev); + mvm->cooling_dev.cdev = NULL; + } } #endif /* CONFIG_THERMAL */