summaryrefslogtreecommitdiff
path: root/drivers/staging/media/go7007/snd-go7007.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/media/go7007/snd-go7007.c')
-rw-r--r--drivers/staging/media/go7007/snd-go7007.c11
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);