diff options
Diffstat (limited to 'drivers/staging/media/go7007/snd-go7007.c')
-rw-r--r-- | drivers/staging/media/go7007/snd-go7007.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/staging/media/go7007/snd-go7007.c b/drivers/staging/media/go7007/snd-go7007.c index 5af29ff..4be0fa4 100644 --- a/drivers/staging/media/go7007/snd-go7007.c +++ b/drivers/staging/media/go7007/snd-go7007.c @@ -221,8 +221,6 @@ static int go7007_snd_free(struct snd_device *device) kfree(go->snd_context); go->snd_context = NULL; - if (--go->ref_count == 0) - kfree(go); return 0; } @@ -267,9 +265,9 @@ int go7007_snd_init(struct go7007 *go) kfree(gosnd); return ret; } - strncpy(gosnd->card->driver, "go7007", sizeof(gosnd->card->driver)); - strncpy(gosnd->card->shortname, go->name, sizeof(gosnd->card->driver)); - strncpy(gosnd->card->longname, gosnd->card->shortname, + strlcpy(gosnd->card->driver, "go7007", sizeof(gosnd->card->driver)); + strlcpy(gosnd->card->shortname, go->name, sizeof(gosnd->card->driver)); + strlcpy(gosnd->card->longname, gosnd->card->shortname, sizeof(gosnd->card->longname)); gosnd->pcm->private_data = go; @@ -285,8 +283,8 @@ int go7007_snd_init(struct go7007 *go) gosnd->substream = NULL; go->snd_context = gosnd; + v4l2_device_get(&go->v4l2_dev); ++dev; - ++go->ref_count; return 0; } @@ -298,6 +296,7 @@ int go7007_snd_remove(struct go7007 *go) snd_card_disconnect(gosnd->card); snd_card_free_when_closed(gosnd->card); + v4l2_device_put(&go->v4l2_dev); return 0; } EXPORT_SYMBOL(go7007_snd_remove); |