diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2014-11-27 06:29:24 -0500 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2014-12-09 05:05:23 -0500 |
commit | 0ffaeadfc451a11b5da35578b2f9b977f9f46489 (patch) | |
tree | 930739568abe771406bd9e9a01c11c8707958f42 | |
parent | e16e12be34648777606a2c03a3526409b38f0e63 (diff) |
mic_virtio: robust feature array size calculation
mic reads sizeof(vdev->features) bits from device, but in fact it stores
bits in local features variable. use sizeof(features) to make code
robust against future changes extending sizeof(vdev->features).
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r-- | drivers/misc/mic/card/mic_virtio.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/misc/mic/card/mic_virtio.c b/drivers/misc/mic/card/mic_virtio.c index 4f070ad1875c..d5da9ff646cb 100644 --- a/drivers/misc/mic/card/mic_virtio.c +++ b/drivers/misc/mic/card/mic_virtio.c | |||
@@ -76,8 +76,7 @@ static u32 mic_get_features(struct virtio_device *vdev) | |||
76 | u8 __iomem *in_features = mic_vq_features(desc); | 76 | u8 __iomem *in_features = mic_vq_features(desc); |
77 | int feature_len = ioread8(&desc->feature_len); | 77 | int feature_len = ioread8(&desc->feature_len); |
78 | 78 | ||
79 | bits = min_t(unsigned, feature_len, | 79 | bits = min_t(unsigned, feature_len, sizeof(features)) * 8; |
80 | sizeof(vdev->features)) * 8; | ||
81 | for (i = 0; i < bits; i++) | 80 | for (i = 0; i < bits; i++) |
82 | if (ioread8(&in_features[i / 8]) & (BIT(i % 8))) | 81 | if (ioread8(&in_features[i / 8]) & (BIT(i % 8))) |
83 | features |= BIT(i); | 82 | features |= BIT(i); |