aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/enclosure.h
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2014-12-30 14:46:14 -0800
committerChristoph Hellwig <hch@lst.de>2015-01-09 15:44:17 +0100
commited09dcc8bd7fe0991af7737e675996cbd022f38f (patch)
tree1d789e23989575d366b2bf657c7b7fbf89772733 /include/linux/enclosure.h
parentscsi: retry report-luns when reported LU count requres more memory (diff)
downloadlinux-dev-ed09dcc8bd7fe0991af7737e675996cbd022f38f.tar.xz
linux-dev-ed09dcc8bd7fe0991af7737e675996cbd022f38f.zip
ses: close potential registration race
The slot and address fields have a small window of instability when userspace can read them before initialization. Separate enclosure_component allocation from registration. Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Song Liu <songliubraving@fb.com> Reviewed-by: Jens Axboe <axboe@fb.com> Cc: Hannes Reinecke <hare@suse.de> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'include/linux/enclosure.h')
-rw-r--r--include/linux/enclosure.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/include/linux/enclosure.h b/include/linux/enclosure.h
index 9a33c5f7e126..a835d335b924 100644
--- a/include/linux/enclosure.h
+++ b/include/linux/enclosure.h
@@ -120,8 +120,9 @@ enclosure_register(struct device *, const char *, int,
struct enclosure_component_callbacks *);
void enclosure_unregister(struct enclosure_device *);
struct enclosure_component *
-enclosure_component_register(struct enclosure_device *, unsigned int,
- enum enclosure_component_type, const char *);
+enclosure_component_alloc(struct enclosure_device *, unsigned int,
+ enum enclosure_component_type, const char *);
+int enclosure_component_register(struct enclosure_component *);
int enclosure_add_device(struct enclosure_device *enclosure, int component,
struct device *dev);
int enclosure_remove_device(struct enclosure_device *, struct device *);