sync with OpenBSD -current

This commit is contained in:
purplerain 2023-12-06 11:41:20 +00:00
parent bd69b5651c
commit f7289b5181
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
11 changed files with 388 additions and 27 deletions

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ukbd.c,v 1.88 2022/10/04 19:38:20 miod Exp $ */
/* $OpenBSD: ukbd.c,v 1.89 2023/12/05 20:49:31 miod Exp $ */
/* $NetBSD: ukbd.c,v 1.85 2003/03/11 16:44:00 augustss Exp $ */
/*
@ -180,6 +180,17 @@ const struct cfattach ukbd_ca = {
void ukbd_gdium_munge(void *, uint8_t *, u_int);
#endif
const struct usb_devno ukbd_never_console[] = {
/* Apple HID-proxy is always detected before any real USB keyboard */
{ USB_VENDOR_APPLE, USB_PRODUCT_APPLE_BLUETOOTH_HCI },
/* ugold(4) devices, which also present themselves as ukbd */
{ USB_VENDOR_MICRODIA, USB_PRODUCT_MICRODIA_TEMPER },
{ USB_VENDOR_MICRODIA, USB_PRODUCT_MICRODIA_TEMPERHUM },
{ USB_VENDOR_PCSENSORS, USB_PRODUCT_PCSENSORS_TEMPER },
{ USB_VENDOR_RDING, USB_PRODUCT_RDING_TEMPER },
{ USB_VENDOR_WCH2, USB_PRODUCT_WCH2_TEMPER },
};
int
ukbd_match(struct device *parent, void *match, void *aux)
{
@ -225,11 +236,9 @@ ukbd_attach(struct device *parent, struct device *self, void *aux)
sc->sc_hdev.sc_fsize = hid_report_size(desc, dlen, hid_feature, repid);
/*
* Since the HID-Proxy is always detected before any
* real keyboard, do not let it grab the console.
* Do not allow unwanted devices to claim the console.
*/
if (uha->uaa->vendor == USB_VENDOR_APPLE &&
uha->uaa->product == USB_PRODUCT_APPLE_BLUETOOTH_HCI)
if (usb_lookup(ukbd_never_console, uha->uaa->vendor, uha->uaa->product))
console = 0;
quirks = usbd_get_quirks(sc->sc_hdev.sc_udev)->uq_flags;

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ip_mroute.c,v 1.139 2023/06/14 14:30:08 mvs Exp $ */
/* $OpenBSD: ip_mroute.c,v 1.140 2023/12/06 09:27:17 bluhm Exp $ */
/* $NetBSD: ip_mroute.c,v 1.85 2004/04/26 01:31:57 matt Exp $ */
/*
@ -1048,11 +1048,18 @@ del_mfc(struct socket *so, struct mbuf *m)
}
int
socket_send(struct socket *s, struct mbuf *mm, struct sockaddr_in *src)
socket_send(struct socket *so, struct mbuf *mm, struct sockaddr_in *src)
{
if (s != NULL) {
if (sbappendaddr(s, &s->so_rcv, sintosa(src), mm, NULL) != 0) {
sorwakeup(s);
if (so != NULL) {
struct inpcb *inp = sotoinpcb(so);
int ret;
mtx_enter(&inp->inp_mtx);
ret = sbappendaddr(so, &so->so_rcv, sintosa(src), mm, NULL);
mtx_leave(&inp->inp_mtx);
if (ret != 0) {
sorwakeup(so);
return (0);
}
}

View file

@ -1,4 +1,4 @@
/* $OpenBSD: ip6_mroute.c,v 1.137 2023/06/14 14:30:08 mvs Exp $ */
/* $OpenBSD: ip6_mroute.c,v 1.138 2023/12/06 09:27:17 bluhm Exp $ */
/* $NetBSD: ip6_mroute.c,v 1.59 2003/12/10 09:28:38 itojun Exp $ */
/* $KAME: ip6_mroute.c,v 1.45 2001/03/25 08:38:51 itojun Exp $ */
@ -853,11 +853,18 @@ del_m6fc(struct socket *so, struct mf6cctl *mfccp)
}
int
socket6_send(struct socket *s, struct mbuf *mm, struct sockaddr_in6 *src)
socket6_send(struct socket *so, struct mbuf *mm, struct sockaddr_in6 *src)
{
if (s) {
if (sbappendaddr(s, &s->so_rcv, sin6tosa(src), mm, NULL) != 0) {
sorwakeup(s);
if (so != NULL) {
struct inpcb *inp = sotoinpcb(so);
int ret;
mtx_enter(&inp->inp_mtx);
ret = sbappendaddr(so, &so->so_rcv, sin6tosa(src), mm, NULL);
mtx_leave(&inp->inp_mtx);
if (ret != 0) {
sorwakeup(so);
return 0;
}
}