diff -u usr/src/SUNWut/utadem.orig/utadem.c usr/src/SUNWut/utadem/utadem.c --- usr/src/SUNWut/utadem.orig/utadem.c 2007-08-02 00:45:46.000000000 +0200 +++ usr/src/SUNWut/utadem/utadem.c 2007-10-14 02:32:03.000000000 +0200 @@ -11,7 +11,9 @@ #include #include -#include +#ifdef WHO_NEEDS_THIS +# include +#endif #include #include #include @@ -25,6 +27,9 @@ #include #include #include +#ifdef HAVE_COMPAT_IOCTL +# include /* (un)lock_kernel() */ +#endif #include #include @@ -2384,6 +2389,20 @@ return (ret); } +#ifdef HAVE_COMPAT_IOCTL +static long +utadem_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int r; + + lock_kernel(); + r = file->f_op->ioctl(file->f_path.dentry->d_inode, file, cmd, arg);; + unlock_kernel(); + + return r; +} +#endif /* HAVE_COMPAT_IOCTL */ + static int utadsp_open(struct inode *inode, struct file *file) { @@ -2509,6 +2528,9 @@ write: utadsp_write, poll: utadsp_poll, ioctl: utadem_ioctl, +#ifdef HAVE_COMPAT_IOCTL + compat_ioctl: utadem_compat_ioctl, +#endif open: utadsp_open, release: utadsp_release, }; @@ -2593,6 +2615,9 @@ owner: THIS_MODULE, llseek: no_llseek, ioctl: utadem_ioctl, +#ifdef HAVE_COMPAT_IOCTL + compat_ioctl: utadem_compat_ioctl, +#endif open: utamix_open, release: utamix_release, }; @@ -2662,6 +2687,7 @@ #endif #if defined(CONFIG_COMPAT) || defined(CONFIG_SPARC64) || defined(CONFIG_X86_64) || defined(CONFIG_PPC64) +#ifndef HAVE_COMPAT_IOCTL register_ioctl32_conversion(UTAIO_GETVERSION, (ioctl_trans_handler_t)0UL); register_ioctl32_conversion(UTAIO_NEWSESSION, (ioctl_trans_handler_t)0UL); register_ioctl32_conversion(UTAIO_GETMSG, (ioctl_trans_handler_t)0UL); @@ -2671,6 +2697,7 @@ register_ioctl32_conversion(COMPAT_UTAIO_SETMIXER, (ioctl_trans_handler_t)0UL); register_ioctl32_conversion(UTAIO_UNDERRUN, (ioctl_trans_handler_t)0UL); register_ioctl32_conversion(UTAIO_OVERRUN, (ioctl_trans_handler_t)0UL); +#endif /* HAVE_COMPAT_IOCTL */ #endif /* CONFIG_COMPAT */ /* hook into sound_core */ @@ -2729,6 +2756,7 @@ #endif #if defined(CONFIG_COMPAT) || defined(CONFIG_SPARC64) || defined(CONFIG_X86_64) || defined(CONFIG_PPC64) +#ifndef HAVE_COMPAT_IOCTL unregister_ioctl32_conversion(UTAIO_NEWSESSION); unregister_ioctl32_conversion(UTAIO_GETMSG); unregister_ioctl32_conversion(UTAIO_SETDCAPS); @@ -2737,6 +2765,7 @@ unregister_ioctl32_conversion(COMPAT_UTAIO_SETMIXER); unregister_ioctl32_conversion(UTAIO_UNDERRUN); unregister_ioctl32_conversion(UTAIO_OVERRUN); +#endif /* HAVE_COMPAT_IOCTL */ #endif /* CONFIG_COMPAT */ } diff -u usr/src/SUNWut/utadem.orig/utadem.h usr/src/SUNWut/utadem/utadem.h --- usr/src/SUNWut/utadem.orig/utadem.h 2007-08-02 00:45:46.000000000 +0200 +++ usr/src/SUNWut/utadem/utadem.h 2007-10-14 02:19:32.000000000 +0200 @@ -14,7 +14,9 @@ #if defined(CONFIG_COMPAT) || defined(CONFIG_SPARC64) || defined(CONFIG_X86_64) || defined(CONFIG_PPC64) #include -#include +#ifndef HAVE_COMPAT_IOCTL +# include +#endif #include #endif /* CONFIG_COMPAT */