ALSA: timer: Fix broken compat timer user status ioctl
[pandora-kernel.git] / sound / core / timer_compat.c
index 5512f53..8e7eddf 100644 (file)
@@ -40,9 +40,11 @@ static int snd_timer_user_info_compat(struct file *file,
        struct snd_timer *t;
 
        tu = file->private_data;
-       snd_assert(tu->timeri != NULL, return -ENXIO);
+       if (snd_BUG_ON(!tu->timeri))
+               return -ENXIO;
        t = tu->timeri->timer;
-       snd_assert(t != NULL, return -ENXIO);
+       if (snd_BUG_ON(!t))
+               return -ENXIO;
        memset(&info, 0, sizeof(info));
        info.card = t->card ? t->card->number : -1;
        if (t->hw.flags & SNDRV_TIMER_HW_SLAVE)
@@ -68,12 +70,14 @@ static int snd_timer_user_status_compat(struct file *file,
                                        struct snd_timer_status32 __user *_status)
 {
        struct snd_timer_user *tu;
-       struct snd_timer_status status;
+       struct snd_timer_status32 status;
        
        tu = file->private_data;
-       snd_assert(tu->timeri != NULL, return -ENXIO);
+       if (snd_BUG_ON(!tu->timeri))
+               return -ENXIO;
        memset(&status, 0, sizeof(status));
-       status.tstamp = tu->tstamp;
+       status.tstamp.tv_sec = tu->tstamp.tv_sec;
+       status.tstamp.tv_nsec = tu->tstamp.tv_nsec;
        status.resolution = snd_timer_resolution(tu->timeri);
        status.lost = tu->timeri->lost;
        status.overrun = tu->overrun;