diff options
Diffstat (limited to 'drivers/firewire')
-rw-r--r-- | drivers/firewire/fw-cdev.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/firewire/fw-cdev.c b/drivers/firewire/fw-cdev.c index 2784f91896db..160cb27e120c 100644 --- a/drivers/firewire/fw-cdev.c +++ b/drivers/firewire/fw-cdev.c | |||
@@ -742,9 +742,17 @@ static void release_descriptor(struct client *client, | |||
742 | static int ioctl_add_descriptor(struct client *client, void *buffer) | 742 | static int ioctl_add_descriptor(struct client *client, void *buffer) |
743 | { | 743 | { |
744 | struct fw_cdev_add_descriptor *request = buffer; | 744 | struct fw_cdev_add_descriptor *request = buffer; |
745 | struct fw_card *card = client->device->card; | ||
745 | struct descriptor_resource *r; | 746 | struct descriptor_resource *r; |
746 | int ret; | 747 | int ret; |
747 | 748 | ||
749 | /* Access policy: Allow this ioctl only on local nodes' device files. */ | ||
750 | spin_lock_irq(&card->lock); | ||
751 | ret = client->device->node_id != card->local_node->node_id; | ||
752 | spin_unlock_irq(&card->lock); | ||
753 | if (ret) | ||
754 | return -ENOSYS; | ||
755 | |||
748 | if (request->length > 256) | 756 | if (request->length > 256) |
749 | return -EINVAL; | 757 | return -EINVAL; |
750 | 758 | ||