1 /* 2 * Event char devices, giving access to raw input device events. 3 * 4 * Copyright (c) 1999-2002 Vojtech Pavlik 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License version 2 as published by 8 * the Free Software Foundation. 9 */ 10 11 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 12 13 #define EVDEV_MINOR_BASE 64 14 #define EVDEV_MINORS 32 15 #define EVDEV_MIN_BUFFER_SIZE 64U 16 #define EVDEV_BUF_PACKETS 8 17 18 #include <linux/poll.h> 19 #include <linux/sched.h> 20 #include <linux/slab.h> 21 #include <linux/vmalloc.h> 22 #include <linux/mm.h> 23 #include <linux/module.h> 24 #include <linux/init.h> 25 #include <linux/input/mt.h> 26 #include <linux/major.h> 27 #include <linux/device.h> 28 #include <linux/cdev.h> 29 #include "input-compat.h" 30 31 enum evdev_clock_type { 32 EV_CLK_REAL = 0, 33 EV_CLK_MONO, 34 EV_CLK_BOOT, 35 EV_CLK_MAX 36 }; 37 38 struct evdev { 39 int open; 40 struct input_handle handle; 41 wait_queue_head_t wait; 42 struct evdev_client __rcu *grab; 43 struct list_head client_list; 44 spinlock_t client_lock; /* protects client_list */ 45 struct mutex mutex; 46 struct device dev; 47 struct cdev cdev; 48 bool exist; 49 }; 50 51 struct evdev_client { 52 unsigned int head; 53 unsigned int tail; 54 unsigned int packet_head; /* [future] position of the first element of next packet */ 55 spinlock_t buffer_lock; /* protects access to buffer, head and tail */ 56 struct fasync_struct *fasync; 57 struct evdev *evdev; 58 struct list_head node; 59 unsigned int clk_type; 60 bool revoked; 61 unsigned long *evmasks[EV_CNT]; 62 unsigned int bufsize; 63 struct input_event buffer[]; 64 }; 65 66 static size_t evdev_get_mask_cnt(unsigned int type) 67 { 68 static const size_t counts[EV_CNT] = { 69 /* EV_SYN==0 is EV_CNT, _not_ SYN_CNT, see EVIOCGBIT */ 70 [EV_SYN] = EV_CNT, 71 [EV_KEY] = KEY_CNT, 72 [EV_REL] = REL_CNT, 73 [EV_ABS] = ABS_CNT, 74 [EV_MSC] = MSC_CNT, 75 [EV_SW] = SW_CNT, 76 [EV_LED] = LED_CNT, 77 [EV_SND] = SND_CNT, 78 [EV_FF] = FF_CNT, 79 }; 80 81 return (type < EV_CNT) ? counts[type] : 0; 82 } 83 84 /* requires the buffer lock to be held */ 85 static bool __evdev_is_filtered(struct evdev_client *client, 86 unsigned int type, 87 unsigned int code) 88 { 89 unsigned long *mask; 90 size_t cnt; 91 92 /* EV_SYN and unknown codes are never filtered */ 93 if (type == EV_SYN || type >= EV_CNT) 94 return false; 95 96 /* first test whether the type is filtered */ 97 mask = client->evmasks[0]; 98 if (mask && !test_bit(type, mask)) 99 return true; 100 101 /* unknown values are never filtered */ 102 cnt = evdev_get_mask_cnt(type); 103 if (!cnt || code >= cnt) 104 return false; 105 106 mask = client->evmasks[type]; 107 return mask && !test_bit(code, mask); 108 } 109 110 /* flush queued events of type @type, caller must hold client->buffer_lock */ 111 static void __evdev_flush_queue(struct evdev_client *client, unsigned int type) 112 { 113 unsigned int i, head, num; 114 unsigned int mask = client->bufsize - 1; 115 bool is_report; 116 struct input_event *ev; 117 118 BUG_ON(type == EV_SYN); 119 120 head = client->tail; 121 client->packet_head = client->tail; 122 123 /* init to 1 so a leading SYN_REPORT will not be dropped */ 124 num = 1; 125 126 for (i = client->tail; i != client->head; i = (i + 1) & mask) { 127 ev = &client->buffer[i]; 128 is_report = ev->type == EV_SYN && ev->code == SYN_REPORT; 129 130 if (ev->type == type) { 131 /* drop matched entry */ 132 continue; 133 } else if (is_report && !num) { 134 /* drop empty SYN_REPORT groups */ 135 continue; 136 } else if (head != i) { 137 /* move entry to fill the gap */ 138 client->buffer[head] = *ev; 139 } 140 141 num++; 142 head = (head + 1) & mask; 143 144 if (is_report) { 145 num = 0; 146 client->packet_head = head; 147 } 148 } 149 150 client->head = head; 151 } 152 153 static void __evdev_queue_syn_dropped(struct evdev_client *client) 154 { 155 struct input_event ev; 156 ktime_t time; 157 struct timespec64 ts; 158 159 time = client->clk_type == EV_CLK_REAL ? 160 ktime_get_real() : 161 client->clk_type == EV_CLK_MONO ? 162 ktime_get() : 163 ktime_get_boottime(); 164 165 ts = ktime_to_timespec64(time); 166 ev.input_event_sec = ts.tv_sec; 167 ev.input_event_usec = ts.tv_nsec / NSEC_PER_USEC; 168 ev.type = EV_SYN; 169 ev.code = SYN_DROPPED; 170 ev.value = 0; 171 172 client->buffer[client->head++] = ev; 173 client->head &= client->bufsize - 1; 174 175 if (unlikely(client->head == client->tail)) { 176 /* drop queue but keep our SYN_DROPPED event */ 177 client->tail = (client->head - 1) & (client->bufsize - 1); 178 client->packet_head = client->tail; 179 } 180 } 181 182 static void evdev_queue_syn_dropped(struct evdev_client *client) 183 { 184 unsigned long flags; 185 186 spin_lock_irqsave(&client->buffer_lock, flags); 187 __evdev_queue_syn_dropped(client); 188 spin_unlock_irqrestore(&client->buffer_lock, flags); 189 } 190 191 static int evdev_set_clk_type(struct evdev_client *client, unsigned int clkid) 192 { 193 unsigned long flags; 194 unsigned int clk_type; 195 196 switch (clkid) { 197 198 case CLOCK_REALTIME: 199 clk_type = EV_CLK_REAL; 200 break; 201 case CLOCK_MONOTONIC: 202 clk_type = EV_CLK_MONO; 203 break; 204 case CLOCK_BOOTTIME: 205 clk_type = EV_CLK_BOOT; 206 break; 207 default: 208 return -EINVAL; 209 } 210 211 if (client->clk_type != clk_type) { 212 client->clk_type = clk_type; 213 214 /* 215 * Flush pending events and queue SYN_DROPPED event, 216 * but only if the queue is not empty. 217 */ 218 spin_lock_irqsave(&client->buffer_lock, flags); 219 220 if (client->head != client->tail) { 221 client->packet_head = client->head = client->tail; 222 __evdev_queue_syn_dropped(client); 223 } 224 225 spin_unlock_irqrestore(&client->buffer_lock, flags); 226 } 227 228 return 0; 229 } 230 231 static void __pass_event(struct evdev_client *client, 232 const struct input_event *event) 233 { 234 client->buffer[client->head++] = *event; 235 client->head &= client->bufsize - 1; 236 237 if (unlikely(client->head == client->tail)) { 238 /* 239 * This effectively "drops" all unconsumed events, leaving 240 * EV_SYN/SYN_DROPPED plus the newest event in the queue. 241 */ 242 client->tail = (client->head - 2) & (client->bufsize - 1); 243 244 client->buffer[client->tail].input_event_sec = 245 event->input_event_sec; 246 client->buffer[client->tail].input_event_usec = 247 event->input_event_usec; 248 client->buffer[client->tail].type = EV_SYN; 249 client->buffer[client->tail].code = SYN_DROPPED; 250 client->buffer[client->tail].value = 0; 251 252 client->packet_head = client->tail; 253 } 254 255 if (event->type == EV_SYN && event->code == SYN_REPORT) { 256 client->packet_head = client->head; 257 kill_fasync(&client->fasync, SIGIO, POLL_IN); 258 } 259 } 260 261 static void evdev_pass_values(struct evdev_client *client, 262 const struct input_value *vals, unsigned int count, 263 ktime_t *ev_time) 264 { 265 struct evdev *evdev = client->evdev; 266 const struct input_value *v; 267 struct input_event event; 268 struct timespec64 ts; 269 bool wakeup = false; 270 271 if (client->revoked) 272 return; 273 274 ts = ktime_to_timespec64(ev_time[client->clk_type]); 275 event.input_event_sec = ts.tv_sec; 276 event.input_event_usec = ts.tv_nsec / NSEC_PER_USEC; 277 278 /* Interrupts are disabled, just acquire the lock. */ 279 spin_lock(&client->buffer_lock); 280 281 for (v = vals; v != vals + count; v++) { 282 if (__evdev_is_filtered(client, v->type, v->code)) 283 continue; 284 285 if (v->type == EV_SYN && v->code == SYN_REPORT) { 286 /* drop empty SYN_REPORT */ 287 if (client->packet_head == client->head) 288 continue; 289 290 wakeup = true; 291 } 292 293 event.type = v->type; 294 event.code = v->code; 295 event.value = v->value; 296 __pass_event(client, &event); 297 } 298 299 spin_unlock(&client->buffer_lock); 300 301 if (wakeup) 302 wake_up_interruptible(&evdev->wait); 303 } 304 305 /* 306 * Pass incoming events to all connected clients. 307 */ 308 static void evdev_events(struct input_handle *handle, 309 const struct input_value *vals, unsigned int count) 310 { 311 struct evdev *evdev = handle->private; 312 struct evdev_client *client; 313 ktime_t ev_time[EV_CLK_MAX]; 314 315 ev_time[EV_CLK_MONO] = ktime_get(); 316 ev_time[EV_CLK_REAL] = ktime_mono_to_real(ev_time[EV_CLK_MONO]); 317 ev_time[EV_CLK_BOOT] = ktime_mono_to_any(ev_time[EV_CLK_MONO], 318 TK_OFFS_BOOT); 319 320 rcu_read_lock(); 321 322 client = rcu_dereference(evdev->grab); 323 324 if (client) 325 evdev_pass_values(client, vals, count, ev_time); 326 else 327 list_for_each_entry_rcu(client, &evdev->client_list, node) 328 evdev_pass_values(client, vals, count, ev_time); 329 330 rcu_read_unlock(); 331 } 332 333 /* 334 * Pass incoming event to all connected clients. 335 */ 336 static void evdev_event(struct input_handle *handle, 337 unsigned int type, unsigned int code, int value) 338 { 339 struct input_value vals[] = { { type, code, value } }; 340 341 evdev_events(handle, vals, 1); 342 } 343 344 static int evdev_fasync(int fd, struct file *file, int on) 345 { 346 struct evdev_client *client = file->private_data; 347 348 return fasync_helper(fd, file, on, &client->fasync); 349 } 350 351 static int evdev_flush(struct file *file, fl_owner_t id) 352 { 353 struct evdev_client *client = file->private_data; 354 struct evdev *evdev = client->evdev; 355 356 mutex_lock(&evdev->mutex); 357 358 if (evdev->exist && !client->revoked) 359 input_flush_device(&evdev->handle, file); 360 361 mutex_unlock(&evdev->mutex); 362 return 0; 363 } 364 365 static void evdev_free(struct device *dev) 366 { 367 struct evdev *evdev = container_of(dev, struct evdev, dev); 368 369 input_put_device(evdev->handle.dev); 370 kfree(evdev); 371 } 372 373 /* 374 * Grabs an event device (along with underlying input device). 375 * This function is called with evdev->mutex taken. 376 */ 377 static int evdev_grab(struct evdev *evdev, struct evdev_client *client) 378 { 379 int error; 380 381 if (evdev->grab) 382 return -EBUSY; 383 384 error = input_grab_device(&evdev->handle); 385 if (error) 386 return error; 387 388 rcu_assign_pointer(evdev->grab, client); 389 390 return 0; 391 } 392 393 static int evdev_ungrab(struct evdev *evdev, struct evdev_client *client) 394 { 395 struct evdev_client *grab = rcu_dereference_protected(evdev->grab, 396 lockdep_is_held(&evdev->mutex)); 397 398 if (grab != client) 399 return -EINVAL; 400 401 rcu_assign_pointer(evdev->grab, NULL); 402 synchronize_rcu(); 403 input_release_device(&evdev->handle); 404 405 return 0; 406 } 407 408 static void evdev_attach_client(struct evdev *evdev, 409 struct evdev_client *client) 410 { 411 spin_lock(&evdev->client_lock); 412 list_add_tail_rcu(&client->node, &evdev->client_list); 413 spin_unlock(&evdev->client_lock); 414 } 415 416 static void evdev_detach_client(struct evdev *evdev, 417 struct evdev_client *client) 418 { 419 spin_lock(&evdev->client_lock); 420 list_del_rcu(&client->node); 421 spin_unlock(&evdev->client_lock); 422 synchronize_rcu(); 423 } 424 425 static int evdev_open_device(struct evdev *evdev) 426 { 427 int retval; 428 429 retval = mutex_lock_interruptible(&evdev->mutex); 430 if (retval) 431 return retval; 432 433 if (!evdev->exist) 434 retval = -ENODEV; 435 else if (!evdev->open++) { 436 retval = input_open_device(&evdev->handle); 437 if (retval) 438 evdev->open--; 439 } 440 441 mutex_unlock(&evdev->mutex); 442 return retval; 443 } 444 445 static void evdev_close_device(struct evdev *evdev) 446 { 447 mutex_lock(&evdev->mutex); 448 449 if (evdev->exist && !--evdev->open) 450 input_close_device(&evdev->handle); 451 452 mutex_unlock(&evdev->mutex); 453 } 454 455 /* 456 * Wake up users waiting for IO so they can disconnect from 457 * dead device. 458 */ 459 static void evdev_hangup(struct evdev *evdev) 460 { 461 struct evdev_client *client; 462 463 spin_lock(&evdev->client_lock); 464 list_for_each_entry(client, &evdev->client_list, node) 465 kill_fasync(&client->fasync, SIGIO, POLL_HUP); 466 spin_unlock(&evdev->client_lock); 467 468 wake_up_interruptible(&evdev->wait); 469 } 470 471 static int evdev_release(struct inode *inode, struct file *file) 472 { 473 struct evdev_client *client = file->private_data; 474 struct evdev *evdev = client->evdev; 475 unsigned int i; 476 477 mutex_lock(&evdev->mutex); 478 evdev_ungrab(evdev, client); 479 mutex_unlock(&evdev->mutex); 480 481 evdev_detach_client(evdev, client); 482 483 for (i = 0; i < EV_CNT; ++i) 484 bitmap_free(client->evmasks[i]); 485 486 kvfree(client); 487 488 evdev_close_device(evdev); 489 490 return 0; 491 } 492 493 static unsigned int evdev_compute_buffer_size(struct input_dev *dev) 494 { 495 unsigned int n_events = 496 max(dev->hint_events_per_packet * EVDEV_BUF_PACKETS, 497 EVDEV_MIN_BUFFER_SIZE); 498 499 return roundup_pow_of_two(n_events); 500 } 501 502 static int evdev_open(struct inode *inode, struct file *file) 503 { 504 struct evdev *evdev = container_of(inode->i_cdev, struct evdev, cdev); 505 unsigned int bufsize = evdev_compute_buffer_size(evdev->handle.dev); 506 unsigned int size = sizeof(struct evdev_client) + 507 bufsize * sizeof(struct input_event); 508 struct evdev_client *client; 509 int error; 510 511 client = kzalloc(size, GFP_KERNEL | __GFP_NOWARN); 512 if (!client) 513 client = vzalloc(size); 514 if (!client) 515 return -ENOMEM; 516 517 client->bufsize = bufsize; 518 spin_lock_init(&client->buffer_lock); 519 client->evdev = evdev; 520 evdev_attach_client(evdev, client); 521 522 error = evdev_open_device(evdev); 523 if (error) 524 goto err_free_client; 525 526 file->private_data = client; 527 nonseekable_open(inode, file); 528 529 return 0; 530 531 err_free_client: 532 evdev_detach_client(evdev, client); 533 kvfree(client); 534 return error; 535 } 536 537 static ssize_t evdev_write(struct file *file, const char __user *buffer, 538 size_t count, loff_t *ppos) 539 { 540 struct evdev_client *client = file->private_data; 541 struct evdev *evdev = client->evdev; 542 struct input_event event; 543 int retval = 0; 544 545 if (count != 0 && count < input_event_size()) 546 return -EINVAL; 547 548 retval = mutex_lock_interruptible(&evdev->mutex); 549 if (retval) 550 return retval; 551 552 if (!evdev->exist || client->revoked) { 553 retval = -ENODEV; 554 goto out; 555 } 556 557 while (retval + input_event_size() <= count) { 558 559 if (input_event_from_user(buffer + retval, &event)) { 560 retval = -EFAULT; 561 goto out; 562 } 563 retval += input_event_size(); 564 565 input_inject_event(&evdev->handle, 566 event.type, event.code, event.value); 567 cond_resched(); 568 } 569 570 out: 571 mutex_unlock(&evdev->mutex); 572 return retval; 573 } 574 575 static int evdev_fetch_next_event(struct evdev_client *client, 576 struct input_event *event) 577 { 578 int have_event; 579 580 spin_lock_irq(&client->buffer_lock); 581 582 have_event = client->packet_head != client->tail; 583 if (have_event) { 584 *event = client->buffer[client->tail++]; 585 client->tail &= client->bufsize - 1; 586 } 587 588 spin_unlock_irq(&client->buffer_lock); 589 590 return have_event; 591 } 592 593 static ssize_t evdev_read(struct file *file, char __user *buffer, 594 size_t count, loff_t *ppos) 595 { 596 struct evdev_client *client = file->private_data; 597 struct evdev *evdev = client->evdev; 598 struct input_event event; 599 size_t read = 0; 600 int error; 601 602 if (count != 0 && count < input_event_size()) 603 return -EINVAL; 604 605 for (;;) { 606 if (!evdev->exist || client->revoked) 607 return -ENODEV; 608 609 if (client->packet_head == client->tail && 610 (file->f_flags & O_NONBLOCK)) 611 return -EAGAIN; 612 613 /* 614 * count == 0 is special - no IO is done but we check 615 * for error conditions (see above). 616 */ 617 if (count == 0) 618 break; 619 620 while (read + input_event_size() <= count && 621 evdev_fetch_next_event(client, &event)) { 622 623 if (input_event_to_user(buffer + read, &event)) 624 return -EFAULT; 625 626 read += input_event_size(); 627 } 628 629 if (read) 630 break; 631 632 if (!(file->f_flags & O_NONBLOCK)) { 633 error = wait_event_interruptible(evdev->wait, 634 client->packet_head != client->tail || 635 !evdev->exist || client->revoked); 636 if (error) 637 return error; 638 } 639 } 640 641 return read; 642 } 643 644 /* No kernel lock - fine */ 645 static __poll_t evdev_poll(struct file *file, poll_table *wait) 646 { 647 struct evdev_client *client = file->private_data; 648 struct evdev *evdev = client->evdev; 649 __poll_t mask; 650 651 poll_wait(file, &evdev->wait, wait); 652 653 if (evdev->exist && !client->revoked) 654 mask = EPOLLOUT | EPOLLWRNORM; 655 else 656 mask = EPOLLHUP | EPOLLERR; 657 658 if (client->packet_head != client->tail) 659 mask |= EPOLLIN | EPOLLRDNORM; 660 661 return mask; 662 } 663 664 #ifdef CONFIG_COMPAT 665 666 #define BITS_PER_LONG_COMPAT (sizeof(compat_long_t) * 8) 667 #define BITS_TO_LONGS_COMPAT(x) ((((x) - 1) / BITS_PER_LONG_COMPAT) + 1) 668 669 #ifdef __BIG_ENDIAN 670 static int bits_to_user(unsigned long *bits, unsigned int maxbit, 671 unsigned int maxlen, void __user *p, int compat) 672 { 673 int len, i; 674 675 if (compat) { 676 len = BITS_TO_LONGS_COMPAT(maxbit) * sizeof(compat_long_t); 677 if (len > maxlen) 678 len = maxlen; 679 680 for (i = 0; i < len / sizeof(compat_long_t); i++) 681 if (copy_to_user((compat_long_t __user *) p + i, 682 (compat_long_t *) bits + 683 i + 1 - ((i % 2) << 1), 684 sizeof(compat_long_t))) 685 return -EFAULT; 686 } else { 687 len = BITS_TO_LONGS(maxbit) * sizeof(long); 688 if (len > maxlen) 689 len = maxlen; 690 691 if (copy_to_user(p, bits, len)) 692 return -EFAULT; 693 } 694 695 return len; 696 } 697 698 static int bits_from_user(unsigned long *bits, unsigned int maxbit, 699 unsigned int maxlen, const void __user *p, int compat) 700 { 701 int len, i; 702 703 if (compat) { 704 if (maxlen % sizeof(compat_long_t)) 705 return -EINVAL; 706 707 len = BITS_TO_LONGS_COMPAT(maxbit) * sizeof(compat_long_t); 708 if (len > maxlen) 709 len = maxlen; 710 711 for (i = 0; i < len / sizeof(compat_long_t); i++) 712 if (copy_from_user((compat_long_t *) bits + 713 i + 1 - ((i % 2) << 1), 714 (compat_long_t __user *) p + i, 715 sizeof(compat_long_t))) 716 return -EFAULT; 717 if (i % 2) 718 *((compat_long_t *) bits + i - 1) = 0; 719 720 } else { 721 if (maxlen % sizeof(long)) 722 return -EINVAL; 723 724 len = BITS_TO_LONGS(maxbit) * sizeof(long); 725 if (len > maxlen) 726 len = maxlen; 727 728 if (copy_from_user(bits, p, len)) 729 return -EFAULT; 730 } 731 732 return len; 733 } 734 735 #else 736 737 static int bits_to_user(unsigned long *bits, unsigned int maxbit, 738 unsigned int maxlen, void __user *p, int compat) 739 { 740 int len = compat ? 741 BITS_TO_LONGS_COMPAT(maxbit) * sizeof(compat_long_t) : 742 BITS_TO_LONGS(maxbit) * sizeof(long); 743 744 if (len > maxlen) 745 len = maxlen; 746 747 return copy_to_user(p, bits, len) ? -EFAULT : len; 748 } 749 750 static int bits_from_user(unsigned long *bits, unsigned int maxbit, 751 unsigned int maxlen, const void __user *p, int compat) 752 { 753 size_t chunk_size = compat ? sizeof(compat_long_t) : sizeof(long); 754 int len; 755 756 if (maxlen % chunk_size) 757 return -EINVAL; 758 759 len = compat ? BITS_TO_LONGS_COMPAT(maxbit) : BITS_TO_LONGS(maxbit); 760 len *= chunk_size; 761 if (len > maxlen) 762 len = maxlen; 763 764 return copy_from_user(bits, p, len) ? -EFAULT : len; 765 } 766 767 #endif /* __BIG_ENDIAN */ 768 769 #else 770 771 static int bits_to_user(unsigned long *bits, unsigned int maxbit, 772 unsigned int maxlen, void __user *p, int compat) 773 { 774 int len = BITS_TO_LONGS(maxbit) * sizeof(long); 775 776 if (len > maxlen) 777 len = maxlen; 778 779 return copy_to_user(p, bits, len) ? -EFAULT : len; 780 } 781 782 static int bits_from_user(unsigned long *bits, unsigned int maxbit, 783 unsigned int maxlen, const void __user *p, int compat) 784 { 785 int len; 786 787 if (maxlen % sizeof(long)) 788 return -EINVAL; 789 790 len = BITS_TO_LONGS(maxbit) * sizeof(long); 791 if (len > maxlen) 792 len = maxlen; 793 794 return copy_from_user(bits, p, len) ? -EFAULT : len; 795 } 796 797 #endif /* CONFIG_COMPAT */ 798 799 static int str_to_user(const char *str, unsigned int maxlen, void __user *p) 800 { 801 int len; 802 803 if (!str) 804 return -ENOENT; 805 806 len = strlen(str) + 1; 807 if (len > maxlen) 808 len = maxlen; 809 810 return copy_to_user(p, str, len) ? -EFAULT : len; 811 } 812 813 static int handle_eviocgbit(struct input_dev *dev, 814 unsigned int type, unsigned int size, 815 void __user *p, int compat_mode) 816 { 817 unsigned long *bits; 818 int len; 819 820 switch (type) { 821 822 case 0: bits = dev->evbit; len = EV_MAX; break; 823 case EV_KEY: bits = dev->keybit; len = KEY_MAX; break; 824 case EV_REL: bits = dev->relbit; len = REL_MAX; break; 825 case EV_ABS: bits = dev->absbit; len = ABS_MAX; break; 826 case EV_MSC: bits = dev->mscbit; len = MSC_MAX; break; 827 case EV_LED: bits = dev->ledbit; len = LED_MAX; break; 828 case EV_SND: bits = dev->sndbit; len = SND_MAX; break; 829 case EV_FF: bits = dev->ffbit; len = FF_MAX; break; 830 case EV_SW: bits = dev->swbit; len = SW_MAX; break; 831 default: return -EINVAL; 832 } 833 834 return bits_to_user(bits, len, size, p, compat_mode); 835 } 836 837 static int evdev_handle_get_keycode(struct input_dev *dev, void __user *p) 838 { 839 struct input_keymap_entry ke = { 840 .len = sizeof(unsigned int), 841 .flags = 0, 842 }; 843 int __user *ip = (int __user *)p; 844 int error; 845 846 /* legacy case */ 847 if (copy_from_user(ke.scancode, p, sizeof(unsigned int))) 848 return -EFAULT; 849 850 error = input_get_keycode(dev, &ke); 851 if (error) 852 return error; 853 854 if (put_user(ke.keycode, ip + 1)) 855 return -EFAULT; 856 857 return 0; 858 } 859 860 static int evdev_handle_get_keycode_v2(struct input_dev *dev, void __user *p) 861 { 862 struct input_keymap_entry ke; 863 int error; 864 865 if (copy_from_user(&ke, p, sizeof(ke))) 866 return -EFAULT; 867 868 error = input_get_keycode(dev, &ke); 869 if (error) 870 return error; 871 872 if (copy_to_user(p, &ke, sizeof(ke))) 873 return -EFAULT; 874 875 return 0; 876 } 877 878 static int evdev_handle_set_keycode(struct input_dev *dev, void __user *p) 879 { 880 struct input_keymap_entry ke = { 881 .len = sizeof(unsigned int), 882 .flags = 0, 883 }; 884 int __user *ip = (int __user *)p; 885 886 if (copy_from_user(ke.scancode, p, sizeof(unsigned int))) 887 return -EFAULT; 888 889 if (get_user(ke.keycode, ip + 1)) 890 return -EFAULT; 891 892 return input_set_keycode(dev, &ke); 893 } 894 895 static int evdev_handle_set_keycode_v2(struct input_dev *dev, void __user *p) 896 { 897 struct input_keymap_entry ke; 898 899 if (copy_from_user(&ke, p, sizeof(ke))) 900 return -EFAULT; 901 902 if (ke.len > sizeof(ke.scancode)) 903 return -EINVAL; 904 905 return input_set_keycode(dev, &ke); 906 } 907 908 /* 909 * If we transfer state to the user, we should flush all pending events 910 * of the same type from the client's queue. Otherwise, they might end up 911 * with duplicate events, which can screw up client's state tracking. 912 * If bits_to_user fails after flushing the queue, we queue a SYN_DROPPED 913 * event so user-space will notice missing events. 914 * 915 * LOCKING: 916 * We need to take event_lock before buffer_lock to avoid dead-locks. But we 917 * need the even_lock only to guarantee consistent state. We can safely release 918 * it while flushing the queue. This allows input-core to handle filters while 919 * we flush the queue. 920 */ 921 static int evdev_handle_get_val(struct evdev_client *client, 922 struct input_dev *dev, unsigned int type, 923 unsigned long *bits, unsigned int maxbit, 924 unsigned int maxlen, void __user *p, 925 int compat) 926 { 927 int ret; 928 unsigned long *mem; 929 930 mem = bitmap_alloc(maxbit, GFP_KERNEL); 931 if (!mem) 932 return -ENOMEM; 933 934 spin_lock_irq(&dev->event_lock); 935 spin_lock(&client->buffer_lock); 936 937 bitmap_copy(mem, bits, maxbit); 938 939 spin_unlock(&dev->event_lock); 940 941 __evdev_flush_queue(client, type); 942 943 spin_unlock_irq(&client->buffer_lock); 944 945 ret = bits_to_user(mem, maxbit, maxlen, p, compat); 946 if (ret < 0) 947 evdev_queue_syn_dropped(client); 948 949 bitmap_free(mem); 950 951 return ret; 952 } 953 954 static int evdev_handle_mt_request(struct input_dev *dev, 955 unsigned int size, 956 int __user *ip) 957 { 958 const struct input_mt *mt = dev->mt; 959 unsigned int code; 960 int max_slots; 961 int i; 962 963 if (get_user(code, &ip[0])) 964 return -EFAULT; 965 if (!mt || !input_is_mt_value(code)) 966 return -EINVAL; 967 968 max_slots = (size - sizeof(__u32)) / sizeof(__s32); 969 for (i = 0; i < mt->num_slots && i < max_slots; i++) { 970 int value = input_mt_get_value(&mt->slots[i], code); 971 if (put_user(value, &ip[1 + i])) 972 return -EFAULT; 973 } 974 975 return 0; 976 } 977 978 static int evdev_revoke(struct evdev *evdev, struct evdev_client *client, 979 struct file *file) 980 { 981 client->revoked = true; 982 evdev_ungrab(evdev, client); 983 input_flush_device(&evdev->handle, file); 984 wake_up_interruptible(&evdev->wait); 985 986 return 0; 987 } 988 989 /* must be called with evdev-mutex held */ 990 static int evdev_set_mask(struct evdev_client *client, 991 unsigned int type, 992 const void __user *codes, 993 u32 codes_size, 994 int compat) 995 { 996 unsigned long flags, *mask, *oldmask; 997 size_t cnt; 998 int error; 999 1000 /* we allow unknown types and 'codes_size > size' for forward-compat */ 1001 cnt = evdev_get_mask_cnt(type); 1002 if (!cnt) 1003 return 0; 1004 1005 mask = bitmap_zalloc(cnt, GFP_KERNEL); 1006 if (!mask) 1007 return -ENOMEM; 1008 1009 error = bits_from_user(mask, cnt - 1, codes_size, codes, compat); 1010 if (error < 0) { 1011 bitmap_free(mask); 1012 return error; 1013 } 1014 1015 spin_lock_irqsave(&client->buffer_lock, flags); 1016 oldmask = client->evmasks[type]; 1017 client->evmasks[type] = mask; 1018 spin_unlock_irqrestore(&client->buffer_lock, flags); 1019 1020 bitmap_free(oldmask); 1021 1022 return 0; 1023 } 1024 1025 /* must be called with evdev-mutex held */ 1026 static int evdev_get_mask(struct evdev_client *client, 1027 unsigned int type, 1028 void __user *codes, 1029 u32 codes_size, 1030 int compat) 1031 { 1032 unsigned long *mask; 1033 size_t cnt, size, xfer_size; 1034 int i; 1035 int error; 1036 1037 /* we allow unknown types and 'codes_size > size' for forward-compat */ 1038 cnt = evdev_get_mask_cnt(type); 1039 size = sizeof(unsigned long) * BITS_TO_LONGS(cnt); 1040 xfer_size = min_t(size_t, codes_size, size); 1041 1042 if (cnt > 0) { 1043 mask = client->evmasks[type]; 1044 if (mask) { 1045 error = bits_to_user(mask, cnt - 1, 1046 xfer_size, codes, compat); 1047 if (error < 0) 1048 return error; 1049 } else { 1050 /* fake mask with all bits set */ 1051 for (i = 0; i < xfer_size; i++) 1052 if (put_user(0xffU, (u8 __user *)codes + i)) 1053 return -EFAULT; 1054 } 1055 } 1056 1057 if (xfer_size < codes_size) 1058 if (clear_user(codes + xfer_size, codes_size - xfer_size)) 1059 return -EFAULT; 1060 1061 return 0; 1062 } 1063 1064 static long evdev_do_ioctl(struct file *file, unsigned int cmd, 1065 void __user *p, int compat_mode) 1066 { 1067 struct evdev_client *client = file->private_data; 1068 struct evdev *evdev = client->evdev; 1069 struct input_dev *dev = evdev->handle.dev; 1070 struct input_absinfo abs; 1071 struct input_mask mask; 1072 struct ff_effect effect; 1073 int __user *ip = (int __user *)p; 1074 unsigned int i, t, u, v; 1075 unsigned int size; 1076 int error; 1077 1078 /* First we check for fixed-length commands */ 1079 switch (cmd) { 1080 1081 case EVIOCGVERSION: 1082 return put_user(EV_VERSION, ip); 1083 1084 case EVIOCGID: 1085 if (copy_to_user(p, &dev->id, sizeof(struct input_id))) 1086 return -EFAULT; 1087 return 0; 1088 1089 case EVIOCGREP: 1090 if (!test_bit(EV_REP, dev->evbit)) 1091 return -ENOSYS; 1092 if (put_user(dev->rep[REP_DELAY], ip)) 1093 return -EFAULT; 1094 if (put_user(dev->rep[REP_PERIOD], ip + 1)) 1095 return -EFAULT; 1096 return 0; 1097 1098 case EVIOCSREP: 1099 if (!test_bit(EV_REP, dev->evbit)) 1100 return -ENOSYS; 1101 if (get_user(u, ip)) 1102 return -EFAULT; 1103 if (get_user(v, ip + 1)) 1104 return -EFAULT; 1105 1106 input_inject_event(&evdev->handle, EV_REP, REP_DELAY, u); 1107 input_inject_event(&evdev->handle, EV_REP, REP_PERIOD, v); 1108 1109 return 0; 1110 1111 case EVIOCRMFF: 1112 return input_ff_erase(dev, (int)(unsigned long) p, file); 1113 1114 case EVIOCGEFFECTS: 1115 i = test_bit(EV_FF, dev->evbit) ? 1116 dev->ff->max_effects : 0; 1117 if (put_user(i, ip)) 1118 return -EFAULT; 1119 return 0; 1120 1121 case EVIOCGRAB: 1122 if (p) 1123 return evdev_grab(evdev, client); 1124 else 1125 return evdev_ungrab(evdev, client); 1126 1127 case EVIOCREVOKE: 1128 if (p) 1129 return -EINVAL; 1130 else 1131 return evdev_revoke(evdev, client, file); 1132 1133 case EVIOCGMASK: { 1134 void __user *codes_ptr; 1135 1136 if (copy_from_user(&mask, p, sizeof(mask))) 1137 return -EFAULT; 1138 1139 codes_ptr = (void __user *)(unsigned long)mask.codes_ptr; 1140 return evdev_get_mask(client, 1141 mask.type, codes_ptr, mask.codes_size, 1142 compat_mode); 1143 } 1144 1145 case EVIOCSMASK: { 1146 const void __user *codes_ptr; 1147 1148 if (copy_from_user(&mask, p, sizeof(mask))) 1149 return -EFAULT; 1150 1151 codes_ptr = (const void __user *)(unsigned long)mask.codes_ptr; 1152 return evdev_set_mask(client, 1153 mask.type, codes_ptr, mask.codes_size, 1154 compat_mode); 1155 } 1156 1157 case EVIOCSCLOCKID: 1158 if (copy_from_user(&i, p, sizeof(unsigned int))) 1159 return -EFAULT; 1160 1161 return evdev_set_clk_type(client, i); 1162 1163 case EVIOCGKEYCODE: 1164 return evdev_handle_get_keycode(dev, p); 1165 1166 case EVIOCSKEYCODE: 1167 return evdev_handle_set_keycode(dev, p); 1168 1169 case EVIOCGKEYCODE_V2: 1170 return evdev_handle_get_keycode_v2(dev, p); 1171 1172 case EVIOCSKEYCODE_V2: 1173 return evdev_handle_set_keycode_v2(dev, p); 1174 } 1175 1176 size = _IOC_SIZE(cmd); 1177 1178 /* Now check variable-length commands */ 1179 #define EVIOC_MASK_SIZE(nr) ((nr) & ~(_IOC_SIZEMASK << _IOC_SIZESHIFT)) 1180 switch (EVIOC_MASK_SIZE(cmd)) { 1181 1182 case EVIOCGPROP(0): 1183 return bits_to_user(dev->propbit, INPUT_PROP_MAX, 1184 size, p, compat_mode); 1185 1186 case EVIOCGMTSLOTS(0): 1187 return evdev_handle_mt_request(dev, size, ip); 1188 1189 case EVIOCGKEY(0): 1190 return evdev_handle_get_val(client, dev, EV_KEY, dev->key, 1191 KEY_MAX, size, p, compat_mode); 1192 1193 case EVIOCGLED(0): 1194 return evdev_handle_get_val(client, dev, EV_LED, dev->led, 1195 LED_MAX, size, p, compat_mode); 1196 1197 case EVIOCGSND(0): 1198 return evdev_handle_get_val(client, dev, EV_SND, dev->snd, 1199 SND_MAX, size, p, compat_mode); 1200 1201 case EVIOCGSW(0): 1202 return evdev_handle_get_val(client, dev, EV_SW, dev->sw, 1203 SW_MAX, size, p, compat_mode); 1204 1205 case EVIOCGNAME(0): 1206 return str_to_user(dev->name, size, p); 1207 1208 case EVIOCGPHYS(0): 1209 return str_to_user(dev->phys, size, p); 1210 1211 case EVIOCGUNIQ(0): 1212 return str_to_user(dev->uniq, size, p); 1213 1214 case EVIOC_MASK_SIZE(EVIOCSFF): 1215 if (input_ff_effect_from_user(p, size, &effect)) 1216 return -EFAULT; 1217 1218 error = input_ff_upload(dev, &effect, file); 1219 if (error) 1220 return error; 1221 1222 if (put_user(effect.id, &(((struct ff_effect __user *)p)->id))) 1223 return -EFAULT; 1224 1225 return 0; 1226 } 1227 1228 /* Multi-number variable-length handlers */ 1229 if (_IOC_TYPE(cmd) != 'E') 1230 return -EINVAL; 1231 1232 if (_IOC_DIR(cmd) == _IOC_READ) { 1233 1234 if ((_IOC_NR(cmd) & ~EV_MAX) == _IOC_NR(EVIOCGBIT(0, 0))) 1235 return handle_eviocgbit(dev, 1236 _IOC_NR(cmd) & EV_MAX, size, 1237 p, compat_mode); 1238 1239 if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0))) { 1240 1241 if (!dev->absinfo) 1242 return -EINVAL; 1243 1244 t = _IOC_NR(cmd) & ABS_MAX; 1245 abs = dev->absinfo[t]; 1246 1247 if (copy_to_user(p, &abs, min_t(size_t, 1248 size, sizeof(struct input_absinfo)))) 1249 return -EFAULT; 1250 1251 return 0; 1252 } 1253 } 1254 1255 if (_IOC_DIR(cmd) == _IOC_WRITE) { 1256 1257 if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0))) { 1258 1259 if (!dev->absinfo) 1260 return -EINVAL; 1261 1262 t = _IOC_NR(cmd) & ABS_MAX; 1263 1264 if (copy_from_user(&abs, p, min_t(size_t, 1265 size, sizeof(struct input_absinfo)))) 1266 return -EFAULT; 1267 1268 if (size < sizeof(struct input_absinfo)) 1269 abs.resolution = 0; 1270 1271 /* We can't change number of reserved MT slots */ 1272 if (t == ABS_MT_SLOT) 1273 return -EINVAL; 1274 1275 /* 1276 * Take event lock to ensure that we are not 1277 * changing device parameters in the middle 1278 * of event. 1279 */ 1280 spin_lock_irq(&dev->event_lock); 1281 dev->absinfo[t] = abs; 1282 spin_unlock_irq(&dev->event_lock); 1283 1284 return 0; 1285 } 1286 } 1287 1288 return -EINVAL; 1289 } 1290 1291 static long evdev_ioctl_handler(struct file *file, unsigned int cmd, 1292 void __user *p, int compat_mode) 1293 { 1294 struct evdev_client *client = file->private_data; 1295 struct evdev *evdev = client->evdev; 1296 int retval; 1297 1298 retval = mutex_lock_interruptible(&evdev->mutex); 1299 if (retval) 1300 return retval; 1301 1302 if (!evdev->exist || client->revoked) { 1303 retval = -ENODEV; 1304 goto out; 1305 } 1306 1307 retval = evdev_do_ioctl(file, cmd, p, compat_mode); 1308 1309 out: 1310 mutex_unlock(&evdev->mutex); 1311 return retval; 1312 } 1313 1314 static long evdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) 1315 { 1316 return evdev_ioctl_handler(file, cmd, (void __user *)arg, 0); 1317 } 1318 1319 #ifdef CONFIG_COMPAT 1320 static long evdev_ioctl_compat(struct file *file, 1321 unsigned int cmd, unsigned long arg) 1322 { 1323 return evdev_ioctl_handler(file, cmd, compat_ptr(arg), 1); 1324 } 1325 #endif 1326 1327 static const struct file_operations evdev_fops = { 1328 .owner = THIS_MODULE, 1329 .read = evdev_read, 1330 .write = evdev_write, 1331 .poll = evdev_poll, 1332 .open = evdev_open, 1333 .release = evdev_release, 1334 .unlocked_ioctl = evdev_ioctl, 1335 #ifdef CONFIG_COMPAT 1336 .compat_ioctl = evdev_ioctl_compat, 1337 #endif 1338 .fasync = evdev_fasync, 1339 .flush = evdev_flush, 1340 .llseek = no_llseek, 1341 }; 1342 1343 /* 1344 * Mark device non-existent. This disables writes, ioctls and 1345 * prevents new users from opening the device. Already posted 1346 * blocking reads will stay, however new ones will fail. 1347 */ 1348 static void evdev_mark_dead(struct evdev *evdev) 1349 { 1350 mutex_lock(&evdev->mutex); 1351 evdev->exist = false; 1352 mutex_unlock(&evdev->mutex); 1353 } 1354 1355 static void evdev_cleanup(struct evdev *evdev) 1356 { 1357 struct input_handle *handle = &evdev->handle; 1358 1359 evdev_mark_dead(evdev); 1360 evdev_hangup(evdev); 1361 1362 /* evdev is marked dead so no one else accesses evdev->open */ 1363 if (evdev->open) { 1364 input_flush_device(handle, NULL); 1365 input_close_device(handle); 1366 } 1367 } 1368 1369 /* 1370 * Create new evdev device. Note that input core serializes calls 1371 * to connect and disconnect. 1372 */ 1373 static int evdev_connect(struct input_handler *handler, struct input_dev *dev, 1374 const struct input_device_id *id) 1375 { 1376 struct evdev *evdev; 1377 int minor; 1378 int dev_no; 1379 int error; 1380 1381 minor = input_get_new_minor(EVDEV_MINOR_BASE, EVDEV_MINORS, true); 1382 if (minor < 0) { 1383 error = minor; 1384 pr_err("failed to reserve new minor: %d\n", error); 1385 return error; 1386 } 1387 1388 evdev = kzalloc(sizeof(struct evdev), GFP_KERNEL); 1389 if (!evdev) { 1390 error = -ENOMEM; 1391 goto err_free_minor; 1392 } 1393 1394 INIT_LIST_HEAD(&evdev->client_list); 1395 spin_lock_init(&evdev->client_lock); 1396 mutex_init(&evdev->mutex); 1397 init_waitqueue_head(&evdev->wait); 1398 evdev->exist = true; 1399 1400 dev_no = minor; 1401 /* Normalize device number if it falls into legacy range */ 1402 if (dev_no < EVDEV_MINOR_BASE + EVDEV_MINORS) 1403 dev_no -= EVDEV_MINOR_BASE; 1404 dev_set_name(&evdev->dev, "event%d", dev_no); 1405 1406 evdev->handle.dev = input_get_device(dev); 1407 evdev->handle.name = dev_name(&evdev->dev); 1408 evdev->handle.handler = handler; 1409 evdev->handle.private = evdev; 1410 1411 evdev->dev.devt = MKDEV(INPUT_MAJOR, minor); 1412 evdev->dev.class = &input_class; 1413 evdev->dev.parent = &dev->dev; 1414 evdev->dev.release = evdev_free; 1415 device_initialize(&evdev->dev); 1416 1417 error = input_register_handle(&evdev->handle); 1418 if (error) 1419 goto err_free_evdev; 1420 1421 cdev_init(&evdev->cdev, &evdev_fops); 1422 1423 error = cdev_device_add(&evdev->cdev, &evdev->dev); 1424 if (error) 1425 goto err_cleanup_evdev; 1426 1427 return 0; 1428 1429 err_cleanup_evdev: 1430 evdev_cleanup(evdev); 1431 input_unregister_handle(&evdev->handle); 1432 err_free_evdev: 1433 put_device(&evdev->dev); 1434 err_free_minor: 1435 input_free_minor(minor); 1436 return error; 1437 } 1438 1439 static void evdev_disconnect(struct input_handle *handle) 1440 { 1441 struct evdev *evdev = handle->private; 1442 1443 cdev_device_del(&evdev->cdev, &evdev->dev); 1444 evdev_cleanup(evdev); 1445 input_free_minor(MINOR(evdev->dev.devt)); 1446 input_unregister_handle(handle); 1447 put_device(&evdev->dev); 1448 } 1449 1450 static const struct input_device_id evdev_ids[] = { 1451 { .driver_info = 1 }, /* Matches all devices */ 1452 { }, /* Terminating zero entry */ 1453 }; 1454 1455 MODULE_DEVICE_TABLE(input, evdev_ids); 1456 1457 static struct input_handler evdev_handler = { 1458 .event = evdev_event, 1459 .events = evdev_events, 1460 .connect = evdev_connect, 1461 .disconnect = evdev_disconnect, 1462 .legacy_minors = true, 1463 .minor = EVDEV_MINOR_BASE, 1464 .name = "evdev", 1465 .id_table = evdev_ids, 1466 }; 1467 1468 static int __init evdev_init(void) 1469 { 1470 return input_register_handler(&evdev_handler); 1471 } 1472 1473 static void __exit evdev_exit(void) 1474 { 1475 input_unregister_handler(&evdev_handler); 1476 } 1477 1478 module_init(evdev_init); 1479 module_exit(evdev_exit); 1480 1481 MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>"); 1482 MODULE_DESCRIPTION("Input driver event char devices"); 1483 MODULE_LICENSE("GPL"); 1484