View | Details | Raw Unified | Return to bug 136866
Collapse All | Expand All

(-)linux-2.6.14.2-20051122115441/drivers/ide/ide-cd.c.orig (-4 / +19 lines)
Lines 2081-2089 cdrom_lockdoor(ide_drive_t *drive, int l Link Here
2081
	if (sense == NULL)
2081
	if (sense == NULL)
2082
		sense = &my_sense;
2082
		sense = &my_sense;
2083
2083
2084
	if (!drive->driver_data) {
2085
		printk (KERN_ERR "%s: no driver_data\n", drive->name);
2086
		return 0;
2087
	}
2088
2084
	/* If the drive cannot lock the door, just pretend. */
2089
	/* If the drive cannot lock the door, just pretend. */
2085
	if (CDROM_CONFIG_FLAGS(drive)->no_doorlock) {
2090
	if (CDROM_CONFIG_FLAGS(drive)->no_doorlock) {
2086
		stat = 0;
2091
		stat = 0;
2092
	} else if (lockflag == CDROM_STATE_FLAGS(drive)->door_locked) {
2093
		/* Lock status has not changed */
2094
		stat = 0;
2087
	} else {
2095
	} else {
2088
		cdrom_prepare_request(drive, &req);
2096
		cdrom_prepare_request(drive, &req);
2089
		req.sense = sense;
2097
		req.sense = sense;
Lines 3270-3275 static int ide_cd_remove(struct device * Link Here
3270
	ide_drive_t *drive = to_ide_device(dev);
3278
	ide_drive_t *drive = to_ide_device(dev);
3271
	struct cdrom_info *info = drive->driver_data;
3279
	struct cdrom_info *info = drive->driver_data;
3272
3280
3281
	if (unregister_cdrom(&info->devinfo))
3282
		printk(KERN_ERR "%s: %s failed to unregister device from the cdrom "
3283
				"driver.\n", __FUNCTION__, drive->name);
3284
3273
	ide_unregister_subdriver(drive, info->driver);
3285
	ide_unregister_subdriver(drive, info->driver);
3274
3286
3275
	del_gendisk(info->disk);
3287
	del_gendisk(info->disk);
Lines 3286-3303 static void ide_cd_release(struct kref * Link Here
3286
	ide_drive_t *drive = info->drive;
3298
	ide_drive_t *drive = info->drive;
3287
	struct gendisk *g = info->disk;
3299
	struct gendisk *g = info->disk;
3288
3300
3301
	printk(KERN_ERR "%s: release IDE CD-ROM\n", drive->name);
3302
3289
	if (info->buffer != NULL)
3303
	if (info->buffer != NULL)
3290
		kfree(info->buffer);
3304
		kfree(info->buffer);
3291
	if (info->toc != NULL)
3305
	if (info->toc != NULL)
3292
		kfree(info->toc);
3306
		kfree(info->toc);
3293
	if (info->changer_info != NULL)
3307
	if (info->changer_info != NULL)
3294
		kfree(info->changer_info);
3308
		kfree(info->changer_info);
3295
	if (devinfo->handle == drive && unregister_cdrom(devinfo))
3309
3296
		printk(KERN_ERR "%s: %s failed to unregister device from the cdrom "
3297
				"driver.\n", __FUNCTION__, drive->name);
3298
	drive->dsc_overlap = 0;
3310
	drive->dsc_overlap = 0;
3299
	drive->driver_data = NULL;
3311
	drive->driver_data = NULL;
3300
	blk_queue_prep_rq(drive->queue, NULL);
3301
	g->private_data = NULL;
3312
	g->private_data = NULL;
3302
	put_disk(g);
3313
	put_disk(g);
3303
	kfree(info);
3314
	kfree(info);
Lines 3374-3379 static int idecd_release(struct inode * Link Here
3374
	struct cdrom_info *info = ide_cd_g(disk);
3385
	struct cdrom_info *info = ide_cd_g(disk);
3375
	ide_drive_t *drive = info->drive;
3386
	ide_drive_t *drive = info->drive;
3376
3387
3388
	if (!drive->driver_data) {
3389
		printk(KERN_ERR "%s: no driver_data, correcting\n", drive->name);
3390
		drive->driver_data = info;
3391
	}
3377
	cdrom_release (&info->devinfo, file);
3392
	cdrom_release (&info->devinfo, file);
3378
	drive->usage--;
3393
	drive->usage--;
3379
3394

Return to bug 136866