Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 211653
b: refs/heads/master
c: d22a698
h: refs/heads/master
i:
  211651: 7897cb1
v: v3
  • Loading branch information
Amit Shah authored and Rusty Russell committed Oct 21, 2010
1 parent a75faa6 commit e639875
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 04950cdf071b6e5aa4794c93ad3e3ce8a1c4aa8c
refs/heads/master: d22a69892bd8f29e3096f6f54c2c00d8aec2e796
20 changes: 13 additions & 7 deletions trunk/drivers/char/virtio_console.c
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ struct port {
struct console cons;

/* Each port associates with a separate char device */
struct cdev cdev;
struct cdev *cdev;
struct device *dev;

/* A waitqueue for poll() or blocking read operations */
Expand Down Expand Up @@ -235,7 +235,7 @@ static struct port *find_port_by_devt_in_portdev(struct ports_device *portdev,

spin_lock_irqsave(&portdev->ports_lock, flags);
list_for_each_entry(port, &portdev->ports, list)
if (port->cdev.dev == dev)
if (port->cdev->dev == dev)
goto out;
port = NULL;
out:
Expand Down Expand Up @@ -1096,14 +1096,20 @@ static int add_port(struct ports_device *portdev, u32 id)
port->in_vq = portdev->in_vqs[port->id];
port->out_vq = portdev->out_vqs[port->id];

cdev_init(&port->cdev, &port_fops);
port->cdev = cdev_alloc();
if (!port->cdev) {
dev_err(&port->portdev->vdev->dev, "Error allocating cdev\n");
err = -ENOMEM;
goto free_port;
}
port->cdev->ops = &port_fops;

devt = MKDEV(portdev->chr_major, id);
err = cdev_add(&port->cdev, devt, 1);
err = cdev_add(port->cdev, devt, 1);
if (err < 0) {
dev_err(&port->portdev->vdev->dev,
"Error %d adding cdev for port %u\n", err, id);
goto free_port;
goto free_cdev;
}
port->dev = device_create(pdrvdata.class, &port->portdev->vdev->dev,
devt, port, "vport%up%u",
Expand Down Expand Up @@ -1168,7 +1174,7 @@ static int add_port(struct ports_device *portdev, u32 id)
free_device:
device_destroy(pdrvdata.class, port->dev->devt);
free_cdev:
cdev_del(&port->cdev);
cdev_del(port->cdev);
free_port:
kfree(port);
fail:
Expand Down Expand Up @@ -1212,7 +1218,7 @@ static void remove_port(struct port *port)
}
sysfs_remove_group(&port->dev->kobj, &port_attribute_group);
device_destroy(pdrvdata.class, port->dev->devt);
cdev_del(&port->cdev);
cdev_del(port->cdev);

/* Remove unused data this port might have received. */
discard_port_data(port);
Expand Down

0 comments on commit e639875

Please sign in to comment.