]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add Linux specific ioctl wrapper for CDROMREADMODE1
authorIvo Raisr <ivosh@ivosh.net>
Wed, 10 May 2017 23:14:31 +0000 (23:14 +0000)
committerIvo Raisr <ivosh@ivosh.net>
Wed, 10 May 2017 23:14:31 +0000 (23:14 +0000)
Fixes BZ#360429
Original patch by: Vasantha Ganesh K <vasanthaganesh.k@tuta.io>

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16358

NEWS
coregrind/m_syswrap/syswrap-linux.c
include/vki/vki-linux.h

diff --git a/NEWS b/NEWS
index 4259b331574d837e9dfb5908cc88ad3d3392b8b2..261b16f007646e6f04b4218eae0c1347c0c49468 100644 (file)
--- 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)
index 477e32739109b91f81951bb2eb15d42fc957e7cc..e9652c37c314c9809b4306d1a97678db8a5fe878 100644 (file)
@@ -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;
index afd50c92befd0ad2c42cee86cec293048d0563f5..4840a53e297641a420b952a2e597ecc70b5bab8a 100644 (file)
@@ -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