Input: do not use WARN() in input_alloc_absinfo()
[platform/kernel/linux-starfive.git] / drivers / input / input.c
index 9785546..3304aaa 100644 (file)
@@ -480,11 +480,19 @@ EXPORT_SYMBOL(input_inject_event);
  */
 void input_alloc_absinfo(struct input_dev *dev)
 {
-       if (!dev->absinfo)
-               dev->absinfo = kcalloc(ABS_CNT, sizeof(*dev->absinfo),
-                                       GFP_KERNEL);
+       if (dev->absinfo)
+               return;
 
-       WARN(!dev->absinfo, "%s(): kcalloc() failed?\n", __func__);
+       dev->absinfo = kcalloc(ABS_CNT, sizeof(*dev->absinfo), GFP_KERNEL);
+       if (!dev->absinfo) {
+               dev_err(dev->dev.parent ?: &dev->dev,
+                       "%s: unable to allocate memory\n", __func__);
+               /*
+                * We will handle this allocation failure in
+                * input_register_device() when we refuse to register input
+                * device with ABS bits but without absinfo.
+                */
+       }
 }
 EXPORT_SYMBOL(input_alloc_absinfo);
 
@@ -1943,8 +1951,7 @@ void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int
                break;
 
        default:
-               pr_err("input_set_capability: unknown type %u (code %u)\n",
-                      type, code);
+               pr_err("%s: unknown type %u (code %u)\n", __func__, type, code);
                dump_stack();
                return;
        }