mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-03 18:12:25 -04:00
carl9170: devres-ing hwrng_register usage
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
This commit is contained in:
committed by
Kalle Valo
parent
e42fe43a21
commit
23de0fa0d2
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user