lkml.org 
[lkml]   [2001]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [BUG] HDIO_DRIVE_RESET ioctl is buggy

The HDIO_DRIVE_RESET ioctl implementation in ide.c is broken :

linux-2.4.8-ac8 , hdd is a Teac CD532E-B CDROM drive

( it is the same for several latest linux versions )

[root@localhost scsireset]# ./idereset /dev/hdd # source of iderest below , it just sends the ioctl
hdd: DMA disabled
idereset : ioctl succesful # this is from my idereset program , the rest are kernel messages
hdd: ide_set_handler: handler not null; old=c017e9a0, new=e08ce2f0
bug: kernel timer added twice at c017e8e8.


relevant System.map parts :

c017e800 T ide_end_request
c017e890 T ide_set_handler
c017e8f0 T current_capacity
c017e920 T ide_geninit
c017e9a0 t atapi_reset_pollfunc
c017ea70 t reset_pollfunc
c017ebd0 t check_dma_crc

part of `ksymoops -s all.map` :

e08ce240 t cdrom_start_read [ide-cd]
e08ce2f0 t cdrom_pc_intr [ide-cd]
e08ce4b0 t cdrom_do_pc_continuation [ide-cd]

source if idereset.c :

/*************************
* idereset - reset an ide device
*
* Usage : idereset /dev/hdX
*
*/

#define IDERESET_VERSION "v0.1"


#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/hdreg.h>

void print_usage(FILE * out_file)
{
fprintf(out_file,"idereset " IDERESET_VERSION "\nArgument error.Usage :\n");
fprintf(out_file,"idereset /dev/hdX\n");
}

int main (int argc,char ** argv)
{
int device_fd; /* file descriptor for the device file */

if ( argc !=2 )
{
print_usage(stderr);
return 1;
}
/* open device */
device_fd=open(argv[1], O_RDONLY | O_NONBLOCK);
if ( device_fd == -1 )
{
perror(argv[1]);
return 1;
}
/* ioctl */
if(ioctl( device_fd, HDIO_DRIVE_RESET , NULL))
perror(argv[1]);
else
printf("idereset : ioctl succesful\n");

close(device_fd);

return 0;
}
--
David Balazic
--------------
"Be excellent to each other." - Bill & Ted
- - - - - - - - - - - - - - - - - - - - - -
-
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/

\
 
 \ /
  Last update: 2005-03-22 12:58    [W:0.031 / U:0.416 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site