Two problems with 2.5.x, part 1

A Guy Called Tyketto (tyketto@wizard.com)
Mon, 20 May 2002 17:25:05 -0700


I've just spotted two small, but major problems with the 2.5 series,
in which I wonder if anyone is working on.

1) in 2.5.16, have any restrictions been placed on ioctl() ? with
2.5.16, a non-root user is unable to use /dev/cdrom with an ide cd, to play
audio cds. An strace of workbone shows this:

open("/dev/cdrom", O_RDONLY) = 3
ioctl(3, CDROMSUBCHNL, 0xbfffe814) = -1 EACCES (Permission denied)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
rt_sigaction(SIGINT, {SIG_IGN}, {SIG_DFL}, 8) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_START, {B38400 opost isig -icanon -echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
write(1, "\n", 1
) = 1
ioctl(0, SNDCTL_TMR_START, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
rt_sigaction(SIGINT, {SIG_DFL}, {SIG_IGN}, 8) = 0
munmap(0x40017000, 4096) = 0
_exit(0) = ?

Workbone is supposed to access /dev/cdrom, and then wait for user
input from the number pad, to play the cd. the following strace from workbone
in 2.5.7 shows this working properly:

write(1, "\33[10m\n", 6
) = 55
open("/dev/cdrom", O_RDONLY) = 3 "..., 55
ioctl(3, CDROMSUBCHNL, 0xbfffe654) = 0
ioctl(3, CDROMREADTOCHDR, 0xbfffe626) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
ioctl(3, CDROMREADTOCENTRY, 0xbfffe628) = 0
rt_sigaction(SIGINT, {SIG_IGN}, {SIG_DFL}, 8) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0

This worked as root, and with a kernel <= 2.5.13. I didn't try this
with 2.5.14 or 2.5.15.

since open("/dev/cdrom", O_RDONLY) is returning as it should, It would
be safe to assume that the ioctl() call is causing the problem. /dev/cdrom has
permissions 0666 applied to it.

BL.

-- 
Brad Littlejohn                         | Email:        tyketto@wizard.com
Unix Systems Administrator,             |           tyketto@ozemail.com.au
Web + NewsMaster, BOFH.. Smeghead! :)   |   http://www.wizard.com/~tyketto
  PGP: 1024D/E319F0BF 6980 AAD6 7329 E9E6 D569  F620 C819 199A E319 F0BF

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/