Commit fac829fdcaf451a20106cbc468ff886466320956
1 parent
98e1e0f07c
Exists in
master
and in
7 other branches
[SCSI] raid_attrs: fix dependency problems
RAID attributes uses scsi_is_sdev_device() to gate some SCSI specific checking code. This causes two problems. Firstly if SCSI == n just defining scsi_is_sdev_device() to return false might not be enough to prevent gcc from emitting the code (and thus referring to undefined symbols), so this needs surrounding with an ifdef. Secondly, using scsi_is_sdev_device() when SCSI is either y or m gives a subtle problem in the m case: raid_attrs must also be m to use the symbol. Do the usual Kconfig jiggery-pokery to fix this. Reported-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Showing 2 changed files with 8 additions and 0 deletions Side-by-side Diff
drivers/scsi/Kconfig
drivers/scsi/raid_class.c
| ... | ... | @@ -63,6 +63,7 @@ |
| 63 | 63 | * emulated RAID devices, so start with SCSI */ |
| 64 | 64 | struct raid_internal *i = ac_to_raid_internal(cont); |
| 65 | 65 | |
| 66 | +#if defined(CONFIG_SCSI) || defined(CONFIG_SCSI_MODULE) | |
| 66 | 67 | if (scsi_is_sdev_device(dev)) { |
| 67 | 68 | struct scsi_device *sdev = to_scsi_device(dev); |
| 68 | 69 | |
| ... | ... | @@ -71,6 +72,7 @@ |
| 71 | 72 | |
| 72 | 73 | return i->f->is_raid(dev); |
| 73 | 74 | } |
| 75 | +#endif | |
| 74 | 76 | /* FIXME: look at other subsystems too */ |
| 75 | 77 | return 0; |
| 76 | 78 | } |