[SPARC64]: Simplify VDC device probing.
[pandora-kernel.git] / drivers / block / pktcdvd.c
index 93fb6ed..31be33e 100644 (file)
@@ -146,8 +146,7 @@ static void pkt_kobj_release(struct kobject *kobj)
  **********************************************************/
 
 #define DEF_ATTR(_obj,_name,_mode) \
-       static struct attribute _obj = { \
-               .name = _name, .owner = THIS_MODULE, .mode = _mode }
+       static struct attribute _obj = { .name = _name, .mode = _mode }
 
 /**********************************************************
   /sys/class/pktcdvd/pktcdvd[0-7]/
@@ -765,7 +764,7 @@ static int pkt_generic_packet(struct pktcdvd_device *pd, struct packet_command *
                        goto out;
        }
 
-       rq->cmd_len = COMMAND_SIZE(rq->cmd[0]);
+       rq->cmd_len = COMMAND_SIZE(cgc->cmd[0]);
        memcpy(rq->cmd, cgc->cmd, CDROM_PACKET_SIZE);
        if (sizeof(rq->cmd) > CDROM_PACKET_SIZE)
                memset(rq->cmd + CDROM_PACKET_SIZE, 0, sizeof(rq->cmd) - CDROM_PACKET_SIZE);
@@ -777,7 +776,8 @@ static int pkt_generic_packet(struct pktcdvd_device *pd, struct packet_command *
                rq->cmd_flags |= REQ_QUIET;
 
        blk_execute_rq(rq->q, pd->bdev->bd_disk, rq, 0);
-       ret = rq->errors;
+       if (rq->errors)
+               ret = -EIO;
 out:
        blk_put_request(rq);
        return ret;
@@ -1593,6 +1593,7 @@ static int kcdrwd(void *foobar)
        long min_sleep_time, residue;
 
        set_user_nice(current, -20);
+       set_freezable();
 
        for (;;) {
                DECLARE_WAITQUEUE(wait, current);
@@ -1652,9 +1653,6 @@ static int kcdrwd(void *foobar)
                                }
                        }
 
-                       if (signal_pending(current)) {
-                               flush_signals(current);
-                       }
                        if (kthread_should_stop())
                                break;
                }