From: Ivo Raisr Date: Wed, 10 May 2017 23:14:31 +0000 (+0000) Subject: Add Linux specific ioctl wrapper for CDROMREADMODE1 X-Git-Tag: svn/VALGRIND_3_13_0~76 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=754487de4fcfc1bd2ef576475fc3eb0d79a80af3;p=thirdparty%2Fvalgrind.git Add Linux specific ioctl wrapper for CDROMREADMODE1 Fixes BZ#360429 Original patch by: Vasantha Ganesh K git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16358 --- diff --git a/NEWS b/NEWS index 4259b33157..261b16f007 100644 --- a/NEWS +++ b/NEWS @@ -111,6 +111,7 @@ where XXXXXX is the bug number as listed below. barrier implementation 358697 valgrind.h: Some code remains even when defining NVALGRIND 359202 Add musl libc configure/compile +360429 unhandled ioctl 0x530d with no size/direction hints (CDROMREADMODE1) 367942 Segfault vgPlain_do_sys_sigaction (m_signals.c:1138) 368863 WARNING: unhandled arm64-linux syscall: 100 (get_robust_list) 368865 WARNING: unhandled arm64-linux syscall: 272 (kcmp) diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 477e327391..e9652c37c3 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -6943,8 +6943,13 @@ PRE(sys_ioctl) PRE_MEM_WRITE( "ioctl(CDROMSUBCHNL)", ARG3, sizeof(struct vki_cdrom_subchnl)); break; - case VKI_CDROMREADMODE2: - PRE_MEM_READ( "ioctl(CDROMREADMODE2)", ARG3, VKI_CD_FRAMESIZE_RAW0 ); + case VKI_CDROMREADMODE1: /*0x530d*/ + PRE_MEM_READ("ioctl(CDROMREADMODE1)", ARG3, VKI_CD_FRAMESIZE_RAW1); + PRE_MEM_WRITE("ioctl(CDROMREADMODE1)", ARG3, VKI_CD_FRAMESIZE_RAW1); + break; + case VKI_CDROMREADMODE2: /*0x530c*/ + PRE_MEM_READ("ioctl(CDROMREADMODE2)", ARG3, VKI_CD_FRAMESIZE_RAW0); + PRE_MEM_WRITE("ioctl(CDROMREADMODE2)", ARG3, VKI_CD_FRAMESIZE_RAW0); break; case VKI_CDROMREADTOCHDR: PRE_MEM_WRITE( "ioctl(CDROMREADTOCHDR)", ARG3, @@ -9691,6 +9696,12 @@ POST(sys_ioctl) case VKI_CDROMVOLREAD: POST_MEM_WRITE(ARG3, sizeof(struct vki_cdrom_volctrl)); break; + case VKI_CDROMREADMODE1: + POST_MEM_WRITE(ARG3, VKI_CD_FRAMESIZE_RAW1); + break; + case VKI_CDROMREADMODE2: + POST_MEM_WRITE(ARG3, VKI_CD_FRAMESIZE_RAW0); + break; case VKI_CDROMREADRAW: POST_MEM_WRITE(ARG3, VKI_CD_FRAMESIZE_RAW); break; diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h index afd50c92be..4840a53e29 100644 --- a/include/vki/vki-linux.h +++ b/include/vki/vki-linux.h @@ -1883,6 +1883,8 @@ struct vki_scsi_idlun { (struct cdrom_subchnl) */ #define VKI_CDROMREADMODE2 0x530c /* Read CDROM mode 2 data (2336 Bytes) (struct cdrom_read) */ +#define VKI_CDROMREADMODE1 0x530d /* Read CDROM mode 1 data (2048 Bytes) + (struct cdrom_read) */ #define VKI_CDROMREADAUDIO 0x530e /* (struct cdrom_read_audio) */ #define VKI_CDROMMULTISESSION 0x5310 /* Obtain the start-of-last-session address of multi session disks @@ -2009,6 +2011,7 @@ struct vki_cdrom_generic_command #define VKI_CD_HEAD_SIZE 4 /* header (address) bytes per raw data frame */ #define VKI_CD_FRAMESIZE_RAW 2352 /* bytes per frame, "raw" mode */ #define VKI_CD_FRAMESIZE_RAW0 (VKI_CD_FRAMESIZE_RAW-VKI_CD_SYNC_SIZE-VKI_CD_HEAD_SIZE) /*2336*/ +#define VKI_CD_FRAMESIZE_RAW1 2048 /* bytes per frame, mode 1*/ //---------------------------------------------------------------------- // From linux-2.6.8.1/include/linux/soundcard.h