123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- From e78b75f5be204a0a235da995d01c778dc282bb42 Mon Sep 17 00:00:00 2001
- From: Hayes Wang <[email protected]>
- Date: Fri, 19 Feb 2021 17:04:41 +0800
- Subject: [PATCH] r8152: check if the pointer of the function exists
- commit c79515e47935c747282c6ed2ee5b2ef039756eeb upstream.
- Return error code if autosuspend_en, eee_get, or eee_set don't exist.
- Signed-off-by: Hayes Wang <[email protected]>
- Signed-off-by: Jakub Kicinski <[email protected]>
- ---
- drivers/net/usb/r8152.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
- --- a/drivers/net/usb/r8152.c
- +++ b/drivers/net/usb/r8152.c
- @@ -5737,6 +5737,9 @@ static int rtl8152_runtime_suspend(struc
- struct net_device *netdev = tp->netdev;
- int ret = 0;
-
- + if (!tp->rtl_ops.autosuspend_en)
- + return -EBUSY;
- +
- set_bit(SELECTIVE_SUSPEND, &tp->flags);
- smp_mb__after_atomic();
-
- @@ -6136,6 +6139,11 @@ rtl_ethtool_get_eee(struct net_device *n
- struct r8152 *tp = netdev_priv(net);
- int ret;
-
- + if (!tp->rtl_ops.eee_get) {
- + ret = -EOPNOTSUPP;
- + goto out;
- + }
- +
- ret = usb_autopm_get_interface(tp->intf);
- if (ret < 0)
- goto out;
- @@ -6158,6 +6166,11 @@ rtl_ethtool_set_eee(struct net_device *n
- struct r8152 *tp = netdev_priv(net);
- int ret;
-
- + if (!tp->rtl_ops.eee_set) {
- + ret = -EOPNOTSUPP;
- + goto out;
- + }
- +
- ret = usb_autopm_get_interface(tp->intf);
- if (ret < 0)
- goto out;
|