From nobody Tue Jan 24 22:09:57 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4P1h3T5rxNz3bdXc; Tue, 24 Jan 2023 22:09:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P1h3T5Bg6z4Hcs; Tue, 24 Jan 2023 22:09:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674598197; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RXdJZif3R3FzccCb8NMpsClZfdqsOW/TqLzIbzJ48+A=; b=ojeCKAOZRGbCwwbpU1sG2iWswzQQ1WCdYOKRiQvZ56tBJ/e8BZkxA595wP18WEv+37OxKp nxCJs1f1KM8uHlt8q9qmUIuBhM/G1Kxjcji4j1Kv8k50GrRHB0A94Cdh1rN3WPYm9siOoZ 6N+rLdeCglIvlXcJTR16Ka16/kuntnqt0HnnjFi0+khGnzr51A9VB3a2LV1taNC27rBXdu TreRzc1m1fug/Vd1qNMI8AZbh0OwbxXIgtWjtI7+Y/hAK5KGuBhNsnqXsHQEb+uSXwPmif lSuxWgp6RuAAkgFNuxxltB/fumfVRjPuQS+Lta1oVzxLgxyuSCEq5pXR5hRR/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674598197; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RXdJZif3R3FzccCb8NMpsClZfdqsOW/TqLzIbzJ48+A=; b=jdkOAIXRF/O37suYzq0IdUx9AmyNOwuZA9KKd687Eon5WA6Z9ygJBN5du5UhtnRYW0iZsH A10Qdnz1531Y3EEipH0aFKqXO2vOKIeF1wb+L4vbNIOCkAHO0wb8SbXc++MjLq0TpeLMqZ aJmGX1bFHQoqFosJySMzNaJndll7utqJplLNu6wgfjpW5+UobVnqXNIin2dwnL5wK8Dt1+ rzhAd5ovN6Sl1DiZm3SJVjPdcHZUtLJ7Bcyt8Zr2dbZDsFfQ3R+IEEwPN0i/zMJac2R0ou XvfHBL/1mwE/mnWQe/SnoRIyne46NR4LSHTfAq5mwpXM3jLdkRDVfb2KUE36YA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1674598197; a=rsa-sha256; cv=none; b=F4Hs45Ztv5209KPk6zbhCp4vl9V6d230/mqfNBBpgm3ewt1Z1mOxmpc780J+EADtqfbzL7 xhsNaklATRLZD8xutpiS5+QUdUubpTb3IqHm2GIG3ih8z3x4vUulloXhu8gMfpyo+tfrA0 GPEjxnTX8es7slpNO+uQLd/gLoGBjQ+xH0S0aFmG5wbb1oyjsgOcthYdR+s1IIcOIjWjO8 LBmkpvhOMdcFWjIOv6ew89n3z4iPvnG+MTfJK0mprK6senW2Xi5A6YCGtL+y0x2SKv9HxE WdB4CO8gcUAPTmuvuVb0G40xT5M9aAoaL8BAOhDHqAcUWetOH5csUESEZA23jA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4P1h3T4FKYzQLq; Tue, 24 Jan 2023 22:09:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 30OM9ve3071002; Tue, 24 Jan 2023 22:09:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30OM9vNa071001; Tue, 24 Jan 2023 22:09:57 GMT (envelope-from git) Date: Tue, 24 Jan 2023 22:09:57 GMT Message-Id: <202301242209.30OM9vNa071001@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Warner Losh Subject: git: fd3226dc5769 - stable/13 - loader: net_open() should not replace f->f_devdata List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: fd3226dc576965aeb76d22e77595f339ecca833d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=fd3226dc576965aeb76d22e77595f339ecca833d commit fd3226dc576965aeb76d22e77595f339ecca833d Author: Toomas Soome AuthorDate: 2021-09-24 15:04:31 +0000 Commit: Warner Losh CommitDate: 2023-01-24 21:49:17 +0000 loader: net_open() should not replace f->f_devdata net_open() does replace f_devdata with pointer to netdev_sock, this will cause memory leak when device is closed, but also does alter the devopen() logic. We should store &netdev_sock to dev->d_opendata instead, this would preserve and follow the devopen() logic. Fixes network boot on aarch64 (tested by bz). Reviewed-by: imp MFC After: 2 weeks Differential Revision: https://reviews.freebsd.org/D32227 (cherry picked from commit 98e805b4a18d6ef4d3c9924166e1217e0430290d) --- stand/common/dev_net.c | 8 +++++--- stand/libsa/nfs.c | 4 +++- stand/libsa/tftp.c | 7 +++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/stand/common/dev_net.c b/stand/common/dev_net.c index db13e618e822..70b571047d56 100644 --- a/stand/common/dev_net.c +++ b/stand/common/dev_net.c @@ -114,7 +114,7 @@ net_init(void) /* * Called by devopen after it sets f->f_dev to our devsw entry. - * This opens the low-level device and sets f->f_devdata. + * This opens the low-level device and sets dev->d_opendata. * This is declared with variable arguments... */ static int @@ -193,20 +193,22 @@ net_open(struct open_file *f, ...) } netdev_opens++; - f->f_devdata = &netdev_sock; + dev->d_opendata = &netdev_sock; return (error); } static int net_close(struct open_file *f) { + struct devdesc *dev; #ifdef NETIF_DEBUG if (debug) printf("%s: opens=%d\n", __func__, netdev_opens); #endif - f->f_devdata = NULL; + dev = f->f_devdata; + dev->d_opendata = NULL; return (0); } diff --git a/stand/libsa/nfs.c b/stand/libsa/nfs.c index 084c7261f054..5757395caba2 100644 --- a/stand/libsa/nfs.c +++ b/stand/libsa/nfs.c @@ -464,6 +464,7 @@ nfs_readdata(struct nfs_iodesc *d, off_t off, void *addr, size_t len) int nfs_open(const char *upath, struct open_file *f) { + struct devdesc *dev; struct iodesc *desc; struct nfs_iodesc *currfd = NULL; char buf[2 * NFS_V3MAXFHSIZE + 3]; @@ -484,6 +485,7 @@ nfs_open(const char *upath, struct open_file *f) if (netproto != NET_NFS) return (EINVAL); + dev = f->f_devdata; #ifdef NFS_DEBUG if (debug) printf("nfs_open: %s (rootip=%s rootpath=%s)\n", upath, @@ -497,7 +499,7 @@ nfs_open(const char *upath, struct open_file *f) if (f->f_dev->dv_type != DEVT_NET) return (EINVAL); - if (!(desc = socktodesc(*(int *)(f->f_devdata)))) + if (!(desc = socktodesc(*(int *)(dev->d_opendata)))) return (EINVAL); /* Bind to a reserved port. */ diff --git a/stand/libsa/tftp.c b/stand/libsa/tftp.c index d3f3048e0257..c520a9e3b3b1 100644 --- a/stand/libsa/tftp.c +++ b/stand/libsa/tftp.c @@ -37,7 +37,8 @@ __FBSDID("$FreeBSD$"); /* * Simple TFTP implementation for libsa. * Assumes: - * - socket descriptor (int) at open_file->f_devdata + * - socket descriptor (int) at dev->d_opendata, dev stored at + * open_file->f_devdata * - server host IP in global rootip * Restrictions: * - read only @@ -443,6 +444,7 @@ tftp_getnextblock(struct tftp_handle *h) static int tftp_open(const char *path, struct open_file *f) { + struct devdesc *dev; struct tftp_handle *tftpfile; struct iodesc *io; int res; @@ -463,7 +465,8 @@ tftp_open(const char *path, struct open_file *f) return (ENOMEM); tftpfile->tftp_blksize = TFTP_REQUESTED_BLKSIZE; - tftpfile->iodesc = io = socktodesc(*(int *)(f->f_devdata)); + dev = f->f_devdata; + tftpfile->iodesc = io = socktodesc(*(int *)(dev->d_opendata)); if (io == NULL) { free(tftpfile); return (EINVAL);