Re: svn commit: r363700 - in head/sys: arm/ti arm/ti/am335x arm/ti/clk arm/ti/cpsw arm/ti/omap4 arm/ti/usb dev/uart modules

2020-08-01 Thread Mateusz Guzik
thanks for prompt response. I confirm the issue is fixed.

On 8/1/20, Michal Meloun  wrote:
> Oups, next module dependency on autogenerated header...
> Fixed in r363758.
>
> Thanks for report
> Michal
>
>
> On 01.08.2020 6:39, Mateusz Guzik wrote:
>> This breaks tinderbox for several arm kernels.
>>
>> On 7/30/20, Michal Meloun  wrote:
>>> Author: mmel
>>> Date: Thu Jul 30 14:45:05 2020
>>> New Revision: 363700
>>> URL: https://svnweb.freebsd.org/changeset/base/363700
>>>
>>> Log:
>>>   Move Ti AM335x to dev/extres/clk framework.
>>>
>>>   Re-implement clocks for these SoC by using now standard extres/clk
>>> framework.
>>>   This is necessary for future expansion of these. The new
>>> implementation
>>>   is (due to the size of the patch) only the initial (minimum) version.
>>>   It will be updated/expanded with a subsequent set of particular
>>> patches.
>>>
>>>   This patch is also not tested on OMAP4 based boards (BeagleBone),
>>>   so all possible issues should be (and will be) fixed by ASAP once
>>>   identified.
>>>
>>>   Submited by:  Oskar Holmlund (oskar.holml...@ohdata.se)
>>>   Differential Revision:  https://reviews.freebsd.org/D25118
>>>
>>> Added:
>>>   head/sys/arm/ti/am335x/am3359_cppi41.c   (contents, props changed)
>>>   head/sys/arm/ti/am335x/am335x_usb_phy.c   (contents, props changed)
>>>   head/sys/arm/ti/clk/
>>>   head/sys/arm/ti/clk/clock_common.c   (contents, props changed)
>>>   head/sys/arm/ti/clk/clock_common.h   (contents, props changed)
>>>   head/sys/arm/ti/clk/ti_clk_clkctrl.c   (contents, props changed)
>>>   head/sys/arm/ti/clk/ti_clk_clkctrl.h   (contents, props changed)
>>>   head/sys/arm/ti/clk/ti_clk_dpll.c   (contents, props changed)
>>>   head/sys/arm/ti/clk/ti_clk_dpll.h   (contents, props changed)
>>>   head/sys/arm/ti/clk/ti_clkctrl.c   (contents, props changed)
>>>   head/sys/arm/ti/clk/ti_divider_clock.c   (contents, props changed)
>>>   head/sys/arm/ti/clk/ti_dpll_clock.c   (contents, props changed)
>>>   head/sys/arm/ti/clk/ti_gate_clock.c   (contents, props changed)
>>>   head/sys/arm/ti/clk/ti_mux_clock.c   (contents, props changed)
>>>   head/sys/arm/ti/ti_omap4_cm.c   (contents, props changed)
>>>   head/sys/arm/ti/ti_omap4_cm.h   (contents, props changed)
>>>   head/sys/arm/ti/ti_prm.c   (contents, props changed)
>>>   head/sys/arm/ti/ti_prm.h   (contents, props changed)
>>>   head/sys/arm/ti/ti_scm_syscon.c   (contents, props changed)
>>>   head/sys/arm/ti/ti_sysc.h   (contents, props changed)
>>> Deleted:
>>>   head/sys/arm/ti/am335x/am335x_prcm.c
>>>   head/sys/arm/ti/am335x/am335x_usbss.c
>>>   head/sys/arm/ti/ti_hwmods.c
>>>   head/sys/arm/ti/ti_hwmods.h
>>> Modified:
>>>   head/sys/arm/ti/am335x/am335x_dmtimer.c
>>>   head/sys/arm/ti/am335x/am335x_dmtpps.c
>>>   head/sys/arm/ti/am335x/am335x_dmtreg.h
>>>   head/sys/arm/ti/am335x/am335x_gpio.c
>>>   head/sys/arm/ti/am335x/am335x_lcd.c
>>>   head/sys/arm/ti/am335x/am335x_musb.c
>>>   head/sys/arm/ti/am335x/am335x_pwmss.c
>>>   head/sys/arm/ti/am335x/am335x_rtc.c
>>>   head/sys/arm/ti/am335x/am335x_scm.c
>>>   head/sys/arm/ti/am335x/files.am335x
>>>   head/sys/arm/ti/cpsw/if_cpsw.c
>>>   head/sys/arm/ti/files.ti
>>>   head/sys/arm/ti/omap4/files.omap4
>>>   head/sys/arm/ti/ti_adc.c
>>>   head/sys/arm/ti/ti_edma3.c
>>>   head/sys/arm/ti/ti_gpio.c
>>>   head/sys/arm/ti/ti_i2c.c
>>>   head/sys/arm/ti/ti_mbox.c
>>>   head/sys/arm/ti/ti_pinmux.c
>>>   head/sys/arm/ti/ti_prcm.c
>>>   head/sys/arm/ti/ti_prcm.h
>>>   head/sys/arm/ti/ti_pruss.c
>>>   head/sys/arm/ti/ti_scm.c
>>>   head/sys/arm/ti/ti_sdhci.c
>>>   head/sys/arm/ti/ti_sdma.c
>>>   head/sys/arm/ti/ti_spi.c
>>>   head/sys/arm/ti/ti_sysc.c
>>>   head/sys/arm/ti/ti_wdt.c
>>>   head/sys/arm/ti/usb/omap_ehci.c
>>>   head/sys/arm/ti/usb/omap_host.c
>>>   head/sys/arm/ti/usb/omap_tll.c
>>>   head/sys/dev/uart/uart_dev_ti8250.c
>>>   head/sys/modules/Makefile
>>>
>>> Added: head/sys/arm/ti/am335x/am3359_cppi41.c
>>> ==
>>> --- /dev/null   00:00:00 1970   (empty, because file is newly added)
>>> +++ head/sys/arm/ti/am335x/am3359_cppi41.c  Thu Jul 30 14:45:05
>>> 2020(r363700)
>>> @@ -0,0 +1,192 @@
>>> +/*-
>>> + * Copyright (c) 2019 Emmanuel Vadot 
>>> + *
>>> + * Copyright (c) 2020 Oskar Holmlund 
>>> + *
>>> + * Redistribution and use in source and binary forms, with or without
>>> + * modification, are permitted provided that the following conditions
>>> + * are met:
>>> + * 1. Redistributions of source code must retain the above copyright
>>> + *notice, this list of conditions and the following disclaimer.
>>> + * 2. Redistributions in binary form must reproduce the above copyright
>>> + *notice, this list of conditions and the following disclaimer in
>>> the
>>> + *documentation and/or other materials provided with the
>>> distribution.
>>> + *
>>> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
>>> + * IMPLIED 

svn commit: r363767 - head/sys/kern

2020-08-01 Thread Mateusz Guzik
Author: mjg
Date: Sat Aug  1 16:02:32 2020
New Revision: 363767
URL: https://svnweb.freebsd.org/changeset/base/363767

Log:
  cred: add more asserts for td_realucred == td_ucred

Modified:
  head/sys/kern/kern_prot.c
  head/sys/kern/kern_thread.c

Modified: head/sys/kern/kern_prot.c
==
--- head/sys/kern/kern_prot.c   Sat Aug  1 14:58:43 2020(r363766)
+++ head/sys/kern/kern_prot.c   Sat Aug  1 16:02:32 2020(r363767)
@@ -1881,7 +1881,8 @@ crunuse(struct thread *td)
 {
struct ucred *cr, *crold;
 
-   cr = td->td_ucred;
+   MPASS(td->td_realucred == td->td_ucred);
+   cr = td->td_realucred;
mtx_lock(>cr_mtx);
cr->cr_ref += td->td_ucredref;
td->td_ucredref = 0;
@@ -1897,6 +1898,7 @@ crunuse(struct thread *td)
crold = NULL;
}
mtx_unlock(>cr_mtx);
+   td->td_realucred = NULL;
return (crold);
 }
 

Modified: head/sys/kern/kern_thread.c
==
--- head/sys/kern/kern_thread.c Sat Aug  1 14:58:43 2020(r363766)
+++ head/sys/kern/kern_thread.c Sat Aug  1 16:02:32 2020(r363767)
@@ -543,6 +543,7 @@ thread_exit(void)
(long)p->p_pid, td->td_name);
SDT_PROBE0(proc, , , lwp__exit);
KASSERT(TAILQ_EMPTY(>td_sigqueue.sq_list), ("signal pending"));
+   MPASS(td->td_realucred == td->td_ucred);
 
/*
 * drop FPU & debug register state storage, or any other
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r363759 - head/sys/dev/neta

2020-08-01 Thread Marcin Wojtas
Author: mw
Date: Sat Aug  1 09:40:19 2020
New Revision: 363759
URL: https://svnweb.freebsd.org/changeset/base/363759

Log:
  Fix TX csum handling in if_mvneta
  
  The mvneta device requires MVNETA_TX_CMD_L4_CHECKSUM_NONE bit to be set in 
the tx descriptor is checksum not required. However, mvneta_tx_set_csumflag() 
is not setting this flag currently, causing the hardware to randomly corrupt IP 
header during transmission.
  
  This affects injected IPv4 packets that skips kernel IP stack processing 
(e.g. DHCP), as well as all IPv6 packets, since the driver currently does not 
offload csum for IPv6.
  
  The fix is to remove all the early return paths from mvneta_tx_set_csumflag() 
which do not set the MVNETA_TX_CMD_L4_CHECKSUM_NONE flag.
  
  PR: 248306
  Submitted by: Mike Cui 
  Reported by: Mike Cui 

Modified:
  head/sys/dev/neta/if_mvneta.c

Modified: head/sys/dev/neta/if_mvneta.c
==
--- head/sys/dev/neta/if_mvneta.c   Sat Aug  1 09:06:16 2020
(r363758)
+++ head/sys/dev/neta/if_mvneta.c   Sat Aug  1 09:40:19 2020
(r363759)
@@ -2828,18 +2828,15 @@ mvneta_tx_set_csumflag(struct ifnet *ifp,
csum_flags = ifp->if_hwassist & m->m_pkthdr.csum_flags;
eh = mtod(m, struct ether_header *);
 
-   if (csum_flags == 0)
-   return;
-
switch (ntohs(eh->ether_type)) {
case ETHERTYPE_IP:
ipoff = ETHER_HDR_LEN;
break;
-   case ETHERTYPE_IPV6:
-   return;
case ETHERTYPE_VLAN:
ipoff = ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN;
break;
+   default:
+   csum_flags = 0;
}
 
if (__predict_true(csum_flags & (CSUM_IP|CSUM_IP_TCP|CSUM_IP_UDP))) {
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r363700 - in head/sys: arm/ti arm/ti/am335x arm/ti/clk arm/ti/cpsw arm/ti/omap4 arm/ti/usb dev/uart modules

2020-08-01 Thread Michal Meloun
Oups, next module dependency on autogenerated header...
Fixed in r363758.

Thanks for report
Michal


On 01.08.2020 6:39, Mateusz Guzik wrote:
> This breaks tinderbox for several arm kernels.
> 
> On 7/30/20, Michal Meloun  wrote:
>> Author: mmel
>> Date: Thu Jul 30 14:45:05 2020
>> New Revision: 363700
>> URL: https://svnweb.freebsd.org/changeset/base/363700
>>
>> Log:
>>   Move Ti AM335x to dev/extres/clk framework.
>>
>>   Re-implement clocks for these SoC by using now standard extres/clk
>> framework.
>>   This is necessary for future expansion of these. The new  implementation
>>   is (due to the size of the patch) only the initial (minimum) version.
>>   It will be updated/expanded with a subsequent set of particular patches.
>>
>>   This patch is also not tested on OMAP4 based boards (BeagleBone),
>>   so all possible issues should be (and will be) fixed by ASAP once
>>   identified.
>>
>>   Submited by:   Oskar Holmlund (oskar.holml...@ohdata.se)
>>   Differential Revision:  https://reviews.freebsd.org/D25118
>>
>> Added:
>>   head/sys/arm/ti/am335x/am3359_cppi41.c   (contents, props changed)
>>   head/sys/arm/ti/am335x/am335x_usb_phy.c   (contents, props changed)
>>   head/sys/arm/ti/clk/
>>   head/sys/arm/ti/clk/clock_common.c   (contents, props changed)
>>   head/sys/arm/ti/clk/clock_common.h   (contents, props changed)
>>   head/sys/arm/ti/clk/ti_clk_clkctrl.c   (contents, props changed)
>>   head/sys/arm/ti/clk/ti_clk_clkctrl.h   (contents, props changed)
>>   head/sys/arm/ti/clk/ti_clk_dpll.c   (contents, props changed)
>>   head/sys/arm/ti/clk/ti_clk_dpll.h   (contents, props changed)
>>   head/sys/arm/ti/clk/ti_clkctrl.c   (contents, props changed)
>>   head/sys/arm/ti/clk/ti_divider_clock.c   (contents, props changed)
>>   head/sys/arm/ti/clk/ti_dpll_clock.c   (contents, props changed)
>>   head/sys/arm/ti/clk/ti_gate_clock.c   (contents, props changed)
>>   head/sys/arm/ti/clk/ti_mux_clock.c   (contents, props changed)
>>   head/sys/arm/ti/ti_omap4_cm.c   (contents, props changed)
>>   head/sys/arm/ti/ti_omap4_cm.h   (contents, props changed)
>>   head/sys/arm/ti/ti_prm.c   (contents, props changed)
>>   head/sys/arm/ti/ti_prm.h   (contents, props changed)
>>   head/sys/arm/ti/ti_scm_syscon.c   (contents, props changed)
>>   head/sys/arm/ti/ti_sysc.h   (contents, props changed)
>> Deleted:
>>   head/sys/arm/ti/am335x/am335x_prcm.c
>>   head/sys/arm/ti/am335x/am335x_usbss.c
>>   head/sys/arm/ti/ti_hwmods.c
>>   head/sys/arm/ti/ti_hwmods.h
>> Modified:
>>   head/sys/arm/ti/am335x/am335x_dmtimer.c
>>   head/sys/arm/ti/am335x/am335x_dmtpps.c
>>   head/sys/arm/ti/am335x/am335x_dmtreg.h
>>   head/sys/arm/ti/am335x/am335x_gpio.c
>>   head/sys/arm/ti/am335x/am335x_lcd.c
>>   head/sys/arm/ti/am335x/am335x_musb.c
>>   head/sys/arm/ti/am335x/am335x_pwmss.c
>>   head/sys/arm/ti/am335x/am335x_rtc.c
>>   head/sys/arm/ti/am335x/am335x_scm.c
>>   head/sys/arm/ti/am335x/files.am335x
>>   head/sys/arm/ti/cpsw/if_cpsw.c
>>   head/sys/arm/ti/files.ti
>>   head/sys/arm/ti/omap4/files.omap4
>>   head/sys/arm/ti/ti_adc.c
>>   head/sys/arm/ti/ti_edma3.c
>>   head/sys/arm/ti/ti_gpio.c
>>   head/sys/arm/ti/ti_i2c.c
>>   head/sys/arm/ti/ti_mbox.c
>>   head/sys/arm/ti/ti_pinmux.c
>>   head/sys/arm/ti/ti_prcm.c
>>   head/sys/arm/ti/ti_prcm.h
>>   head/sys/arm/ti/ti_pruss.c
>>   head/sys/arm/ti/ti_scm.c
>>   head/sys/arm/ti/ti_sdhci.c
>>   head/sys/arm/ti/ti_sdma.c
>>   head/sys/arm/ti/ti_spi.c
>>   head/sys/arm/ti/ti_sysc.c
>>   head/sys/arm/ti/ti_wdt.c
>>   head/sys/arm/ti/usb/omap_ehci.c
>>   head/sys/arm/ti/usb/omap_host.c
>>   head/sys/arm/ti/usb/omap_tll.c
>>   head/sys/dev/uart/uart_dev_ti8250.c
>>   head/sys/modules/Makefile
>>
>> Added: head/sys/arm/ti/am335x/am3359_cppi41.c
>> ==
>> --- /dev/null00:00:00 1970   (empty, because file is newly added)
>> +++ head/sys/arm/ti/am335x/am3359_cppi41.c   Thu Jul 30 14:45:05
>> 2020 (r363700)
>> @@ -0,0 +1,192 @@
>> +/*-
>> + * Copyright (c) 2019 Emmanuel Vadot 
>> + *
>> + * Copyright (c) 2020 Oskar Holmlund 
>> + *
>> + * Redistribution and use in source and binary forms, with or without
>> + * modification, are permitted provided that the following conditions
>> + * are met:
>> + * 1. Redistributions of source code must retain the above copyright
>> + *notice, this list of conditions and the following disclaimer.
>> + * 2. Redistributions in binary form must reproduce the above copyright
>> + *notice, this list of conditions and the following disclaimer in the
>> + *documentation and/or other materials provided with the distribution.
>> + *
>> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
>> + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
>> WARRANTIES
>> + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
>> + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
>> + * 

svn commit: r363758 - head/sys/modules/cpsw

2020-08-01 Thread Michal Meloun
Author: mmel
Date: Sat Aug  1 09:06:16 2020
New Revision: 363758
URL: https://svnweb.freebsd.org/changeset/base/363758

Log:
  Add missing dependency for cpsw module.
  
  Reported by:  mjg
  MFC with: r363700

Modified:
  head/sys/modules/cpsw/Makefile

Modified: head/sys/modules/cpsw/Makefile
==
--- head/sys/modules/cpsw/Makefile  Sat Aug  1 06:37:26 2020
(r363757)
+++ head/sys/modules/cpsw/Makefile  Sat Aug  1 09:06:16 2020
(r363758)
@@ -3,6 +3,6 @@
 .PATH: ${SRCTOP}/sys/arm/ti/cpsw
 
 KMOD=   if_cpsw
-SRCS=   if_cpsw.c device_if.h bus_if.h ofw_bus_if.h miibus_if.h
+SRCS=   if_cpsw.c device_if.h bus_if.h ofw_bus_if.h miibus_if.h syscon_if.h
 
 .include 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r363757 - head/sys/sys

2020-08-01 Thread Mateusz Guzik
Author: mjg
Date: Sat Aug  1 06:37:26 2020
New Revision: 363757
URL: https://svnweb.freebsd.org/changeset/base/363757

Log:
  Bump __FreeBSD_version after making rights mandatory for NDINIT_ALL

Modified:
  head/sys/sys/param.h

Modified: head/sys/sys/param.h
==
--- head/sys/sys/param.hSat Aug  1 06:35:18 2020(r363756)
+++ head/sys/sys/param.hSat Aug  1 06:37:26 2020(r363757)
@@ -60,7 +60,7 @@
  * in the range 5 to 9.
  */
 #undef __FreeBSD_version
-#define __FreeBSD_version 1300102  /* Master, propagated to newvers */
+#define __FreeBSD_version 1300103  /* Master, propagated to newvers */
 
 /*
  * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r363756 - head/sys/kern

2020-08-01 Thread Mateusz Guzik
Author: mjg
Date: Sat Aug  1 06:35:18 2020
New Revision: 363756
URL: https://svnweb.freebsd.org/changeset/base/363756

Log:
  cache: reshuffle struct cache_fpl and nameidata_saved
  
  Shaves 16 bytes.

Modified:
  head/sys/kern/vfs_cache.c

Modified: head/sys/kern/vfs_cache.c
==
--- head/sys/kern/vfs_cache.c   Sat Aug  1 06:34:18 2020(r363755)
+++ head/sys/kern/vfs_cache.c   Sat Aug  1 06:35:18 2020(r363756)
@@ -2890,24 +2890,24 @@ cache_fpl_handle_root(struct nameidata *ndp, struct vn
  * need restoring in case fast path lookup fails.
  */
 struct nameidata_saved {
-   int cn_flags;
long cn_namelen;
char *cn_nameptr;
size_t ni_pathlen;
+   int cn_flags;
 };
 
 struct cache_fpl {
-   int line;
-   enum cache_fpl_status status;
-   bool in_smr;
struct nameidata *ndp;
-   struct nameidata_saved snd;
struct componentname *cnp;
+   struct pwd *pwd;
struct vnode *dvp;
-   seqc_t dvp_seqc;
struct vnode *tvp;
+   seqc_t dvp_seqc;
seqc_t tvp_seqc;
-   struct pwd *pwd;
+   struct nameidata_saved snd;
+   int line;
+   enum cache_fpl_status status:8;
+   bool in_smr;
 };
 
 static void
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r363755 - head/sys/kern

2020-08-01 Thread Mateusz Guzik
Author: mjg
Date: Sat Aug  1 06:34:18 2020
New Revision: 363755
URL: https://svnweb.freebsd.org/changeset/base/363755

Log:
  cache: mark climb_mount as __noinline

Modified:
  head/sys/kern/vfs_cache.c

Modified: head/sys/kern/vfs_cache.c
==
--- head/sys/kern/vfs_cache.c   Sat Aug  1 06:33:38 2020(r363754)
+++ head/sys/kern/vfs_cache.c   Sat Aug  1 06:34:18 2020(r363755)
@@ -3448,7 +3448,7 @@ cache_fplookup_mp_supported(struct mount *mp)
  * By the end of successful walk we are guaranteed the reached state was
  * indeed present at least at some point which matches the regular lookup.
  */
-static int
+static int __noinline
 cache_fplookup_climb_mount(struct cache_fpl *fpl)
 {
struct mount *mp, *prev_mp;
@@ -3457,9 +3457,8 @@ cache_fplookup_climb_mount(struct cache_fpl *fpl)
 
vp = fpl->tvp;
vp_seqc = fpl->tvp_seqc;
-   if (vp->v_type != VDIR)
-   return (0);
 
+   VNPASS(vp->v_type == VDIR || vp->v_type == VBAD, vp);
mp = atomic_load_ptr(>v_mountedhere);
if (mp == NULL)
return (0);
@@ -3503,6 +3502,26 @@ cache_fplookup_climb_mount(struct cache_fpl *fpl)
return (0);
 }
 
+static bool
+cache_fplookup_need_climb_mount(struct cache_fpl *fpl)
+{
+   struct mount *mp;
+   struct vnode *vp;
+
+   vp = fpl->tvp;
+
+   /*
+* Hack: while this is a union, the pointer tends to be NULL so save on
+* a branch.
+*/
+   mp = atomic_load_ptr(>v_mountedhere);
+   if (mp == NULL)
+   return (false);
+   if (vp->v_type == VDIR)
+   return (true);
+   return (false);
+}
+
 /*
  * Parse the path.
  *
@@ -3689,9 +3708,11 @@ cache_fplookup_impl(struct vnode *dvp, struct cache_fp
 
VNPASS(!seqc_in_modify(fpl->tvp_seqc), fpl->tvp);
 
-   error = cache_fplookup_climb_mount(fpl);
-   if (__predict_false(error != 0)) {
-   break;
+   if (cache_fplookup_need_climb_mount(fpl)) {
+   error = cache_fplookup_climb_mount(fpl);
+   if (__predict_false(error != 0)) {
+   break;
+   }
}
 
VNPASS(!seqc_in_modify(fpl->tvp_seqc), fpl->tvp);
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r363754 - in head/sys: kern sys

2020-08-01 Thread Mateusz Guzik
Author: mjg
Date: Sat Aug  1 06:33:38 2020
New Revision: 363754
URL: https://svnweb.freebsd.org/changeset/base/363754

Log:
  vfs: inline NDINIT_ALL
  
  The routine takes more than 6 arguments, which on amd64 means some of
  them have to be passed through the stack.

Modified:
  head/sys/kern/vfs_lookup.c
  head/sys/sys/namei.h

Modified: head/sys/kern/vfs_lookup.c
==
--- head/sys/kern/vfs_lookup.c  Sat Aug  1 06:33:11 2020(r363753)
+++ head/sys/kern/vfs_lookup.c  Sat Aug  1 06:33:38 2020(r363754)
@@ -1365,25 +1365,6 @@ bad:
return (error);
 }
 
-void
-NDINIT_ALL(struct nameidata *ndp, u_long op, u_long flags, enum uio_seg segflg,
-const char *namep, int dirfd, struct vnode *startdir, cap_rights_t 
*rightsp,
-struct thread *td)
-{
-
-   MPASS(rightsp != NULL);
-   ndp->ni_cnd.cn_nameiop = op;
-   ndp->ni_cnd.cn_flags = flags;
-   ndp->ni_segflg = segflg;
-   ndp->ni_dirp = namep;
-   ndp->ni_dirfd = dirfd;
-   ndp->ni_startdir = startdir;
-   ndp->ni_resflags = 0;
-   filecaps_init(>ni_filecaps);
-   ndp->ni_cnd.cn_thread = td;
-   ndp->ni_rightsneeded = rightsp;
-}
-
 /*
  * Free data allocated by namei(); see namei(9) for details.
  */

Modified: head/sys/sys/namei.h
==
--- head/sys/sys/namei.hSat Aug  1 06:33:11 2020(r363753)
+++ head/sys/sys/namei.hSat Aug  1 06:33:38 2020(r363754)
@@ -196,9 +196,22 @@ intcache_fplookup(struct nameidata *ndp, enum 
cache_f
 #defineNDINIT_ATVP(ndp, op, flags, segflg, namep, vp, td)  
\
NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, vp, _no_rights, 
td)
 
-void NDINIT_ALL(struct nameidata *ndp, u_long op, u_long flags,
-enum uio_seg segflg, const char *namep, int dirfd, struct vnode *startdir,
-cap_rights_t *rightsp, struct thread *td);
+#define NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, startdir, rightsp, 
td)\
+do {   
\
+   struct nameidata *_ndp = (ndp); 
\
+   cap_rights_t *_rightsp = (rightsp); 
\
+   MPASS(_rightsp != NULL);
\
+   _ndp->ni_cnd.cn_nameiop = op;   
\
+   _ndp->ni_cnd.cn_flags = flags;  
\
+   _ndp->ni_segflg = segflg;   
\
+   _ndp->ni_dirp = namep;  
\
+   _ndp->ni_dirfd = dirfd; 
\
+   _ndp->ni_startdir = startdir;   
\
+   _ndp->ni_resflags = 0;  
\
+   filecaps_init(&_ndp->ni_filecaps);  
\
+   _ndp->ni_cnd.cn_thread = td;
\
+   _ndp->ni_rightsneeded = _rightsp;   
\
+} while (0)
 
 #define NDF_NO_DVP_RELE0x0001
 #define NDF_NO_DVP_UNLOCK  0x0002
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r363753 - in head/sys: kern sys

2020-08-01 Thread Mateusz Guzik
Author: mjg
Date: Sat Aug  1 06:33:11 2020
New Revision: 363753
URL: https://svnweb.freebsd.org/changeset/base/363753

Log:
  vfs: convert ni_rigthsneeded to a pointer
  
  Shaves 8 bytes of struct nameidata on 64-bit platforms.

Modified:
  head/sys/kern/vfs_lookup.c
  head/sys/sys/namei.h

Modified: head/sys/kern/vfs_lookup.c
==
--- head/sys/kern/vfs_lookup.c  Sat Aug  1 06:32:25 2020(r363752)
+++ head/sys/kern/vfs_lookup.c  Sat Aug  1 06:33:11 2020(r363753)
@@ -347,7 +347,7 @@ namei_setup(struct nameidata *ndp, struct vnode **dpp,
*dpp = pwd->pwd_cdir;
vrefact(*dpp);
} else {
-   rights = ndp->ni_rightsneeded;
+   rights = *ndp->ni_rightsneeded;
cap_rights_set_one(, CAP_LOOKUP);
 
if (cnp->cn_flags & AUDITVNODE1)
@@ -403,7 +403,7 @@ namei_setup(struct nameidata *ndp, struct vnode **dpp,
ndp->ni_beneath_latch = pwd->pwd_cdir;
vrefact(ndp->ni_beneath_latch);
} else {
-   rights = ndp->ni_rightsneeded;
+   rights = *ndp->ni_rightsneeded;
cap_rights_set_one(, CAP_LOOKUP);
error = fgetvp_rights(td, ndp->ni_dirfd, ,
_caps, >ni_beneath_latch);
@@ -1381,7 +1381,7 @@ NDINIT_ALL(struct nameidata *ndp, u_long op, u_long fl
ndp->ni_resflags = 0;
filecaps_init(>ni_filecaps);
ndp->ni_cnd.cn_thread = td;
-   ndp->ni_rightsneeded = *rightsp;
+   ndp->ni_rightsneeded = rightsp;
 }
 
 /*

Modified: head/sys/sys/namei.h
==
--- head/sys/sys/namei.hSat Aug  1 06:32:25 2020(r363752)
+++ head/sys/sys/namei.hSat Aug  1 06:33:11 2020(r363753)
@@ -69,7 +69,7 @@ struct nameidata {
 */
const   char *ni_dirp;  /* pathname pointer */
enumuio_seg ni_segflg;  /* location of pathname */
-   cap_rights_t ni_rightsneeded;   /* rights required to look up vnode */
+   cap_rights_t *ni_rightsneeded;  /* rights required to look up vnode */
/*
 * Arguments to lookup.
 */
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r363752 - in head/sys: kern sys

2020-08-01 Thread Mateusz Guzik
Author: mjg
Date: Sat Aug  1 06:32:25 2020
New Revision: 363752
URL: https://svnweb.freebsd.org/changeset/base/363752

Log:
  vfs: make rights mandatory for NDINIT_ALL

Modified:
  head/sys/kern/vfs_lookup.c
  head/sys/sys/namei.h

Modified: head/sys/kern/vfs_lookup.c
==
--- head/sys/kern/vfs_lookup.c  Sat Aug  1 06:31:58 2020(r363751)
+++ head/sys/kern/vfs_lookup.c  Sat Aug  1 06:32:25 2020(r363752)
@@ -1371,6 +1371,7 @@ NDINIT_ALL(struct nameidata *ndp, u_long op, u_long fl
 struct thread *td)
 {
 
+   MPASS(rightsp != NULL);
ndp->ni_cnd.cn_nameiop = op;
ndp->ni_cnd.cn_flags = flags;
ndp->ni_segflg = segflg;
@@ -1380,10 +1381,7 @@ NDINIT_ALL(struct nameidata *ndp, u_long op, u_long fl
ndp->ni_resflags = 0;
filecaps_init(>ni_filecaps);
ndp->ni_cnd.cn_thread = td;
-   if (rightsp != NULL)
-   ndp->ni_rightsneeded = *rightsp;
-   else
-   cap_rights_init_zero(>ni_rightsneeded);
+   ndp->ni_rightsneeded = *rightsp;
 }
 
 /*

Modified: head/sys/sys/namei.h
==
--- head/sys/sys/namei.hSat Aug  1 06:31:58 2020(r363751)
+++ head/sys/sys/namei.hSat Aug  1 06:32:25 2020(r363752)
@@ -188,13 +188,13 @@ int   cache_fplookup(struct nameidata *ndp, enum 
cache_f
  * Initialization of a nameidata structure.
  */
 #defineNDINIT(ndp, op, flags, segflg, namep, td)   
\
-   NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, NULL, 0, td)
+   NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, NULL, 
_no_rights, td)
 #defineNDINIT_AT(ndp, op, flags, segflg, namep, dirfd, td) 
\
-   NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, NULL, 0, td)
+   NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, NULL, _no_rights, 
td)
 #defineNDINIT_ATRIGHTS(ndp, op, flags, segflg, namep, dirfd, rightsp, 
td) \
NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, NULL, rightsp, td)
 #defineNDINIT_ATVP(ndp, op, flags, segflg, namep, vp, td)  
\
-   NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, vp, 0, td)
+   NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, vp, _no_rights, 
td)
 
 void NDINIT_ALL(struct nameidata *ndp, u_long op, u_long flags,
 enum uio_seg segflg, const char *namep, int dirfd, struct vnode *startdir,
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r363751 - head/sys/sys

2020-08-01 Thread Mateusz Guzik
Author: mjg
Date: Sat Aug  1 06:31:58 2020
New Revision: 363751
URL: https://svnweb.freebsd.org/changeset/base/363751

Log:
  capsicum: move global caps to caprights.h
  
  .. for easier inclusion

Modified:
  head/sys/sys/caprights.h
  head/sys/sys/capsicum.h

Modified: head/sys/sys/caprights.h
==
--- head/sys/sys/caprights.hSat Aug  1 04:57:30 2020(r363750)
+++ head/sys/sys/caprights.hSat Aug  1 06:31:58 2020(r363751)
@@ -60,4 +60,52 @@ struct cap_rights {
 typedefstruct cap_rights   cap_rights_t;
 #endif
 
+#ifdef _KERNEL
+extern cap_rights_t cap_accept_rights;
+extern cap_rights_t cap_bind_rights;
+extern cap_rights_t cap_connect_rights;
+extern cap_rights_t cap_event_rights;
+extern cap_rights_t cap_fchdir_rights;
+extern cap_rights_t cap_fchflags_rights;
+extern cap_rights_t cap_fchmod_rights;
+extern cap_rights_t cap_fchown_rights;
+extern cap_rights_t cap_fcntl_rights;
+extern cap_rights_t cap_fexecve_rights;
+extern cap_rights_t cap_flock_rights;
+extern cap_rights_t cap_fpathconf_rights;
+extern cap_rights_t cap_fstat_rights;
+extern cap_rights_t cap_fstatfs_rights;
+extern cap_rights_t cap_fsync_rights;
+extern cap_rights_t cap_ftruncate_rights;
+extern cap_rights_t cap_futimes_rights;
+extern cap_rights_t cap_getpeername_rights;
+extern cap_rights_t cap_getsockopt_rights;
+extern cap_rights_t cap_getsockname_rights;
+extern cap_rights_t cap_ioctl_rights;
+extern cap_rights_t cap_linkat_source_rights;
+extern cap_rights_t cap_linkat_target_rights;
+extern cap_rights_t cap_listen_rights;
+extern cap_rights_t cap_mkdirat_rights;
+extern cap_rights_t cap_mkfifoat_rights;
+extern cap_rights_t cap_mknodat_rights;
+extern cap_rights_t cap_mmap_rights;
+extern cap_rights_t cap_no_rights;
+extern cap_rights_t cap_pdgetpid_rights;
+extern cap_rights_t cap_pdkill_rights;
+extern cap_rights_t cap_pread_rights;
+extern cap_rights_t cap_pwrite_rights;
+extern cap_rights_t cap_read_rights;
+extern cap_rights_t cap_recv_rights;
+extern cap_rights_t cap_renameat_source_rights;
+extern cap_rights_t cap_renameat_target_rights;
+extern cap_rights_t cap_seek_rights;
+extern cap_rights_t cap_send_rights;
+extern cap_rights_t cap_send_connect_rights;
+extern cap_rights_t cap_setsockopt_rights;
+extern cap_rights_t cap_shutdown_rights;
+extern cap_rights_t cap_symlinkat_rights;
+extern cap_rights_t cap_unlinkat_rights;
+extern cap_rights_t cap_write_rights;
+#endif
+
 #endif /* !_SYS_CAPRIGHTS_H_ */

Modified: head/sys/sys/capsicum.h
==
--- head/sys/sys/capsicum.h Sat Aug  1 04:57:30 2020(r363750)
+++ head/sys/sys/capsicum.h Sat Aug  1 06:31:58 2020(r363751)
@@ -419,51 +419,6 @@ __END_DECLS
 #ifdef _KERNEL
 
 #include 
-extern cap_rights_t cap_accept_rights;
-extern cap_rights_t cap_bind_rights;
-extern cap_rights_t cap_connect_rights;
-extern cap_rights_t cap_event_rights;
-extern cap_rights_t cap_fchdir_rights;
-extern cap_rights_t cap_fchflags_rights;
-extern cap_rights_t cap_fchmod_rights;
-extern cap_rights_t cap_fchown_rights;
-extern cap_rights_t cap_fcntl_rights;
-extern cap_rights_t cap_fexecve_rights;
-extern cap_rights_t cap_flock_rights;
-extern cap_rights_t cap_fpathconf_rights;
-extern cap_rights_t cap_fstat_rights;
-extern cap_rights_t cap_fstatfs_rights;
-extern cap_rights_t cap_fsync_rights;
-extern cap_rights_t cap_ftruncate_rights;
-extern cap_rights_t cap_futimes_rights;
-extern cap_rights_t cap_getpeername_rights;
-extern cap_rights_t cap_getsockopt_rights;
-extern cap_rights_t cap_getsockname_rights;
-extern cap_rights_t cap_ioctl_rights;
-extern cap_rights_t cap_linkat_source_rights;
-extern cap_rights_t cap_linkat_target_rights;
-extern cap_rights_t cap_listen_rights;
-extern cap_rights_t cap_mkdirat_rights;
-extern cap_rights_t cap_mkfifoat_rights;
-extern cap_rights_t cap_mknodat_rights;
-extern cap_rights_t cap_mmap_rights;
-extern cap_rights_t cap_no_rights;
-extern cap_rights_t cap_pdgetpid_rights;
-extern cap_rights_t cap_pdkill_rights;
-extern cap_rights_t cap_pread_rights;
-extern cap_rights_t cap_pwrite_rights;
-extern cap_rights_t cap_read_rights;
-extern cap_rights_t cap_recv_rights;
-extern cap_rights_t cap_renameat_source_rights;
-extern cap_rights_t cap_renameat_target_rights;
-extern cap_rights_t cap_seek_rights;
-extern cap_rights_t cap_send_rights;
-extern cap_rights_t cap_send_connect_rights;
-extern cap_rights_t cap_setsockopt_rights;
-extern cap_rights_t cap_shutdown_rights;
-extern cap_rights_t cap_symlinkat_rights;
-extern cap_rights_t cap_unlinkat_rights;
-extern cap_rights_t cap_write_rights;
 
 #define IN_CAPABILITY_MODE(td) (((td)->td_ucred->cr_flags & CRED_FLAG_CAPMODE) 
!= 0)
 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to