diff options
author | Julian Wiedmann | 2018-11-02 19:04:08 +0100 |
---|---|---|
committer | David S. Miller | 2018-11-03 18:44:05 +0100 |
commit | e19e5be8b4cafa8b3f8b0cd1b1dfe20fa0145b83 (patch) | |
tree | f2a8fdc8dad7f905403fd87053959a4d5de2130e /drivers/s390/net/qeth_core.h | |
parent | Merge branch 'net-timeout-fixes-for-GENET-and-SYSTEMPORT' (diff) | |
download | kernel-qcow2-linux-e19e5be8b4cafa8b3f8b0cd1b1dfe20fa0145b83.tar.gz kernel-qcow2-linux-e19e5be8b4cafa8b3f8b0cd1b1dfe20fa0145b83.tar.xz kernel-qcow2-linux-e19e5be8b4cafa8b3f8b0cd1b1dfe20fa0145b83.zip |
s390/qeth: sanitize strings in debug messages
As Documentation/s390/s390dbf.txt states quite clearly, using any
pointer in sprinf-formatted s390dbf debug entries is dangerous.
The pointers are dereferenced whenever the trace file is read from.
So if the referenced data has a shorter life-time than the trace file,
any read operation can result in a use-after-free.
So rip out all hazardous use of indirect data, and replace any usage of
dev_name() and such by the Bus ID number.
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390/net/qeth_core.h')
-rw-r--r-- | drivers/s390/net/qeth_core.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h index 6843bc7ee9f2..884ba9dfb341 100644 --- a/drivers/s390/net/qeth_core.h +++ b/drivers/s390/net/qeth_core.h @@ -87,6 +87,18 @@ struct qeth_dbf_info { #define SENSE_RESETTING_EVENT_BYTE 1 #define SENSE_RESETTING_EVENT_FLAG 0x80 +static inline u32 qeth_get_device_id(struct ccw_device *cdev) +{ + struct ccw_dev_id dev_id; + u32 id; + + ccw_device_get_id(cdev, &dev_id); + id = dev_id.devno; + id |= (u32) (dev_id.ssid << 16); + + return id; +} + /* * Common IO related definitions */ @@ -97,7 +109,8 @@ struct qeth_dbf_info { #define CARD_RDEV_ID(card) dev_name(&card->read.ccwdev->dev) #define CARD_WDEV_ID(card) dev_name(&card->write.ccwdev->dev) #define CARD_DDEV_ID(card) dev_name(&card->data.ccwdev->dev) -#define CHANNEL_ID(channel) dev_name(&channel->ccwdev->dev) +#define CCW_DEVID(cdev) (qeth_get_device_id(cdev)) +#define CARD_DEVID(card) (CCW_DEVID(CARD_RDEV(card))) /** * card stuff |