787-v5.12-r8152-check-if-the-pointer-of-the-function-exists.patch 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. From e78b75f5be204a0a235da995d01c778dc282bb42 Mon Sep 17 00:00:00 2001
  2. From: Hayes Wang <[email protected]>
  3. Date: Fri, 19 Feb 2021 17:04:41 +0800
  4. Subject: [PATCH] r8152: check if the pointer of the function exists
  5. commit c79515e47935c747282c6ed2ee5b2ef039756eeb upstream.
  6. Return error code if autosuspend_en, eee_get, or eee_set don't exist.
  7. Signed-off-by: Hayes Wang <[email protected]>
  8. Signed-off-by: Jakub Kicinski <[email protected]>
  9. ---
  10. drivers/net/usb/r8152.c | 13 +++++++++++++
  11. 1 file changed, 13 insertions(+)
  12. --- a/drivers/net/usb/r8152.c
  13. +++ b/drivers/net/usb/r8152.c
  14. @@ -5737,6 +5737,9 @@ static int rtl8152_runtime_suspend(struc
  15. struct net_device *netdev = tp->netdev;
  16. int ret = 0;
  17. + if (!tp->rtl_ops.autosuspend_en)
  18. + return -EBUSY;
  19. +
  20. set_bit(SELECTIVE_SUSPEND, &tp->flags);
  21. smp_mb__after_atomic();
  22. @@ -6136,6 +6139,11 @@ rtl_ethtool_get_eee(struct net_device *n
  23. struct r8152 *tp = netdev_priv(net);
  24. int ret;
  25. + if (!tp->rtl_ops.eee_get) {
  26. + ret = -EOPNOTSUPP;
  27. + goto out;
  28. + }
  29. +
  30. ret = usb_autopm_get_interface(tp->intf);
  31. if (ret < 0)
  32. goto out;
  33. @@ -6158,6 +6166,11 @@ rtl_ethtool_set_eee(struct net_device *n
  34. struct r8152 *tp = netdev_priv(net);
  35. int ret;
  36. + if (!tp->rtl_ops.eee_set) {
  37. + ret = -EOPNOTSUPP;
  38. + goto out;
  39. + }
  40. +
  41. ret = usb_autopm_get_interface(tp->intf);
  42. if (ret < 0)
  43. goto out;