carl9170: devres-ing hwrng_register usage
authorChristian Lamparter <chunkeey@gmail.com>
Wed, 2 Mar 2022 19:51:35 +0000 (20:51 +0100)
committerKalle Valo <quic_kvalo@quicinc.com>
Thu, 10 Mar 2022 15:53:38 +0000 (17:53 +0200)
devres will take care of freeing the hwrng once it is no longer needed.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/d1c16490462a9371ab3cc16a018ef5e08382a35e.1646250537.git.chunkeey@gmail.com
drivers/net/wireless/ath/carl9170/carl9170.h
drivers/net/wireless/ath/carl9170/main.c

index 84a8ce0..ba29b4a 100644 (file)
@@ -458,7 +458,6 @@ struct ar9170 {
 # define CARL9170_HWRNG_CACHE_SIZE     CARL9170_MAX_CMD_PAYLOAD_LEN
        struct {
                struct hwrng rng;
-               bool initialized;
                char name[30 + 1];
                u16 cache[CARL9170_HWRNG_CACHE_SIZE / sizeof(u16)];
                unsigned int cache_idx;
index f6974af..9495b3d 100644 (file)
@@ -1539,7 +1539,7 @@ static int carl9170_rng_get(struct ar9170 *ar)
 
        BUILD_BUG_ON(RB > CARL9170_MAX_CMD_PAYLOAD_LEN);
 
-       if (!IS_ACCEPTING_CMD(ar) || !ar->rng.initialized)
+       if (!IS_ACCEPTING_CMD(ar))
                return -EAGAIN;
 
        count = ARRAY_SIZE(ar->rng.cache);
@@ -1585,14 +1585,6 @@ static int carl9170_rng_read(struct hwrng *rng, u32 *data)
        return sizeof(u16);
 }
 
-static void carl9170_unregister_hwrng(struct ar9170 *ar)
-{
-       if (ar->rng.initialized) {
-               hwrng_unregister(&ar->rng.rng);
-               ar->rng.initialized = false;
-       }
-}
-
 static int carl9170_register_hwrng(struct ar9170 *ar)
 {
        int err;
@@ -1603,25 +1595,14 @@ static int carl9170_register_hwrng(struct ar9170 *ar)
        ar->rng.rng.data_read = carl9170_rng_read;
        ar->rng.rng.priv = (unsigned long)ar;
 
-       if (WARN_ON(ar->rng.initialized))
-               return -EALREADY;
-
-       err = hwrng_register(&ar->rng.rng);
+       err = devm_hwrng_register(&ar->udev->dev, &ar->rng.rng);
        if (err) {
                dev_err(&ar->udev->dev, "Failed to register the random "
                        "number generator (%d)\n", err);
                return err;
        }
 
-       ar->rng.initialized = true;
-
-       err = carl9170_rng_get(ar);
-       if (err) {
-               carl9170_unregister_hwrng(ar);
-               return err;
-       }
-
-       return 0;
+       return carl9170_rng_get(ar);
 }
 #endif /* CONFIG_CARL9170_HWRNG */
 
@@ -2064,10 +2045,6 @@ void carl9170_unregister(struct ar9170 *ar)
        }
 #endif /* CONFIG_CARL9170_WPC */
 
-#ifdef CONFIG_CARL9170_HWRNG
-       carl9170_unregister_hwrng(ar);
-#endif /* CONFIG_CARL9170_HWRNG */
-
        carl9170_cancel_worker(ar);
        cancel_work_sync(&ar->restart_work);