Merge tag 'char-misc-6.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc

Pull char/misc driver fixes from Greg KH:
"Here are three tiny driver fixes for 6.8-rc3. They include:

- Android binder long-term bug with epoll finally being fixed

- fastrpc driver shutdown bugfix

- open-dice lockdep fix

All of these have been in linux-next this week with no reported
issues"

* tag 'char-misc-6.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
binder: signal epoll threads of self-work
misc: open-dice: Fix spurious lockdep warning
misc: fastrpc: Mark all sessions as invalid in cb_remove

Changed files
+12 -2
drivers
+10
drivers/android/binder.c
··· 478 478 { 479 479 WARN_ON(!list_empty(&thread->waiting_thread_node)); 480 480 binder_enqueue_work_ilocked(work, &thread->todo); 481 + 482 + /* (e)poll-based threads require an explicit wakeup signal when 483 + * queuing their own work; they rely on these events to consume 484 + * messages without I/O block. Without it, threads risk waiting 485 + * indefinitely without handling the work. 486 + */ 487 + if (thread->looper & BINDER_LOOPER_STATE_POLL && 488 + thread->pid == current->pid && !thread->process_todo) 489 + wake_up_interruptible_sync(&thread->wait); 490 + 481 491 thread->process_todo = true; 482 492 } 483 493
+1 -1
drivers/misc/fastrpc.c
··· 2191 2191 int i; 2192 2192 2193 2193 spin_lock_irqsave(&cctx->lock, flags); 2194 - for (i = 1; i < FASTRPC_MAX_SESSIONS; i++) { 2194 + for (i = 0; i < FASTRPC_MAX_SESSIONS; i++) { 2195 2195 if (cctx->session[i].sid == sess->sid) { 2196 2196 cctx->session[i].valid = false; 2197 2197 cctx->sesscount--;
+1 -1
drivers/misc/open-dice.c
··· 140 140 return -ENOMEM; 141 141 142 142 *drvdata = (struct open_dice_drvdata){ 143 - .lock = __MUTEX_INITIALIZER(drvdata->lock), 144 143 .rmem = rmem, 145 144 .misc = (struct miscdevice){ 146 145 .parent = dev, ··· 149 150 .mode = 0600, 150 151 }, 151 152 }; 153 + mutex_init(&drvdata->lock); 152 154 153 155 /* Index overflow check not needed, misc_register() will fail. */ 154 156 snprintf(drvdata->name, sizeof(drvdata->name), DRIVER_NAME"%u", dev_idx++);