Add Linux specific ioctl wrapper for CDROMREADMODE1

Fixes BZ#360429
Original patch by: Vasantha Ganesh K <vasanthaganesh.k@tuta.io>


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16358
This commit is contained in:
Ivo Raisr 2017-05-10 23:14:31 +00:00
parent 647a2e7877
commit 754487de4f
3 changed files with 17 additions and 2 deletions

1
NEWS
View File

@ -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)

View 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;

View 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