On Wed, Oct 20, 2021 at 10:18:57AM +1100, Jonathan Gray wrote:
> On Tue, Oct 19, 2021 at 07:37:36AM -0600, Todd C. Miller wrote:
> > On Tue, 19 Oct 2021 18:08:04 +1100, Jonathan Gray wrote:
> >
> > > There are many others along those lines in the kernel, for example
> > > sparse complains about these in vfs_subr.c
> > >
> > > /sys/kern/vfs_subr.c:274:64: warning: Using plain integer as NULL pointer
> > > /sys/kern/vfs_subr.c:275:64: warning: Using plain integer as NULL pointer
> > > /sys/kern/vfs_subr.c:430:32: warning: Using plain integer as NULL pointer
> > > /sys/kern/vfs_subr.c:467:22: warning: Using plain integer as NULL pointer
> > > /sys/kern/vfs_subr.c:533:50: warning: Using plain integer as NULL pointer
> > > /sys/kern/vfs_subr.c:1150:77: warning: Using plain integer as NULL pointer
> > > /sys/kern/vfs_subr.c:1430:42: warning: Using plain integer as NULL pointer
> > > /sys/kern/vfs_subr.c:1483:19: warning: Using plain integer as NULL pointer
> > > /sys/kern/vfs_subr.c:1752:25: warning: Using plain integer as NULL pointer
> > >
> > > If this is something worth changing should it be a larger diff?
> >
> > I think it is worth changing. Using NULL in place of 0 makes the
> > code easier to parse for humans too.
> >
> > - todd
>
> amd64 mp build shows 923 warnings though some of those are in places
> we wouldn't want to change like libz and drm.
>
> here is a diff to remove the warnings from sys/kern/
ok semarie@
> diff --git sys/ddb/db_sym.h sys/ddb/db_sym.h
> index fe1aff6d6af..c8daa983104 100644
> --- sys/ddb/db_sym.h
> +++ sys/ddb/db_sym.h
> @@ -75,11 +75,11 @@ void db_symbol_values(Elf_Sym *, char **, db_expr_t *);
> /* return name and value of symbol */
>
> #define db_find_sym_and_offset(val,namep,offp) \
> - db_symbol_values(db_search_symbol(val,DB_STGY_ANY,offp),namep,0)
> + db_symbol_values(db_search_symbol(val,DB_STGY_ANY,offp),namep,NULL)
> /* find name&value given approx val */
>
> #define db_find_xtrn_sym_and_offset(val,namep,offp) \
> - db_symbol_values(db_search_symbol(val,DB_STGY_XTRN,offp),namep,0)
> + db_symbol_values(db_search_symbol(val,DB_STGY_XTRN,offp),namep,NULL)
> /* ditto, but no locals */
>
> void db_printsym(db_expr_t, db_strategy_t, int (*)(const char *, ...));
> diff --git sys/kern/kern_exit.c sys/kern/kern_exit.c
> index 0c6ceb3546d..3b194b054af 100644
> --- sys/kern/kern_exit.c
> +++ sys/kern/kern_exit.c
> @@ -266,7 +266,7 @@ exit1(struct proc *p, int xexit, int xsig, int flags)
> qr = LIST_FIRST(&pr->ps_children);
> if (qr) /* only need this if any child is S_ZOMB */
> wakeup(initprocess);
> - for (; qr != 0; qr = nqr) {
> + for (; qr != NULL; qr = nqr) {
> nqr = LIST_NEXT(qr, ps_sibling);
> /*
> * Traced processes are killed since their
> diff --git sys/kern/kern_proc.c sys/kern/kern_proc.c
> index bbe709ea883..a2fa098273e 100644
> --- sys/kern/kern_proc.c
> +++ sys/kern/kern_proc.c
> @@ -320,7 +320,7 @@ leavepgrp(struct process *pr)
> LIST_REMOVE(pr, ps_pglist);
> if (LIST_EMPTY(&pr->ps_pgrp->pg_members))
> pgdelete(pr->ps_pgrp);
> - pr->ps_pgrp = 0;
> + pr->ps_pgrp = NULL;
> }
>
> /*
> diff --git sys/kern/kern_prot.c sys/kern/kern_prot.c
> index f6fff9d87bb..5414550def0 100644
> --- sys/kern/kern_prot.c
> +++ sys/kern/kern_prot.c
> @@ -271,7 +271,8 @@ sys_setpgid(struct proc *curp, void *v, register_t
> *retval)
> newpgrp = pool_get(&pgrp_pool, PR_WAITOK);
>
> if (pid != 0 && pid != curpr->ps_pid) {
> - if ((targpr = prfind(pid)) == 0 || !inferior(targpr, curpr)) {
> + if ((targpr = prfind(pid)) == NULL ||
> + !inferior(targpr, curpr)) {
> error = ESRCH;
> goto out;
> }
> diff --git sys/kern/kern_sig.c sys/kern/kern_sig.c
> index 83d183aed8d..f5c42ab5fc8 100644
> --- sys/kern/kern_sig.c
> +++ sys/kern/kern_sig.c
> @@ -230,7 +230,7 @@ sigstkinit(struct sigaltstack *ss)
> {
> ss->ss_flags = SS_DISABLE;
> ss->ss_size = 0;
> - ss->ss_sp = 0;
> + ss->ss_sp = NULL;
> }
>
> /*
> @@ -1116,7 +1116,7 @@ ptsignal(struct proc *p, int signum, enum signal_type
> type)
> atomic_clearbits_int(siglist, mask);
> if (action == SIG_CATCH)
> goto runfast;
> - if (p->p_wchan == 0)
> + if (p->p_wchan == NULL)
> goto run;
> p->p_stat = SSLEEP;
> goto out;
> @@ -1410,12 +1410,12 @@ postsig(struct proc *p, int signum)
> action = ps->ps_sigact[signum];
> info = (ps->ps_siginfo & mask) != 0;
> onstack = (ps->ps_sigonstack & mask) != 0;
> - sigval.sival_ptr = 0;
> + sigval.sival_ptr = NULL;
>
> if (p->p_sisig != signum) {
> trapno = 0;
> code = SI_USER;
> - sigval.sival_ptr = 0;
> + sigval.sival_ptr = NULL;
> } else {
> trapno = p->p_sitrapno;
> code = p->p_sicode;
> @@ -2139,7 +2139,7 @@ single_thread_clear(struct proc *p, int flag)
> * it back into some sleep queue
> */
> if (q->p_stat == SSTOP && (q->p_flag & flag) == 0) {
> - if (q->p_wchan == 0)
> + if (q->p_wchan == NULL)
> setrunnable(q);
> else
> q->p_stat = SSLEEP;
> diff --git sys/kern/kern_sysctl.c sys/kern/kern_sysctl.c
> index d2069599418..7e0be999b47 100644
> --- sys/kern/kern_sysctl.c
> +++ sys/kern/kern_sysctl.c
> @@ -1998,7 +1998,7 @@ sysctl_proc_nobroadcastkill(int *name, u_int namelen,
> void *newp, size_t newlen,
> return (EINVAL);
>
> /* Only root can change PS_NOBROADCASTKILL */
> - if (newp != 0 && (error = suser(cp)) != 0)
> + if (newp != NULL && (error = suser(cp)) != 0)
> return (error);
>
> /* get the PS_NOBROADCASTKILL flag */
> diff --git sys/kern/kern_tc.c sys/kern/kern_tc.c
> index 69a4a3b19db..240a03c7c42 100644
> --- sys/kern/kern_tc.c
> +++ sys/kern/kern_tc.c
> @@ -56,7 +56,7 @@ dummy_get_timecount(struct timecounter *tc)
>
> static struct timecounter dummy_timecounter = {
> .tc_get_timecount = dummy_get_timecount,
> - .tc_poll_pps = 0,
> + .tc_poll_pps = NULL,
> .tc_counter_mask = ~0u,
> .tc_frequency = 1000000,
> .tc_name = "dummy",
> diff --git sys/kern/subr_disk.c sys/kern/subr_disk.c
> index 64ddf136069..bfedd1ab638 100644
> --- sys/kern/subr_disk.c
> +++ sys/kern/subr_disk.c
> @@ -387,7 +387,7 @@ readdoslabel(struct buf *bp, void (*strat)(struct buf *),
> if (error == 0) {
> dospartoff = DL_GETBSTART(gptlp);
> dospartend = DL_GETBEND(gptlp);
> - if (partoffp == 0)
> + if (partoffp == NULL)
> *lp = *gptlp;
> free(gptlp, M_DEVBUF,
> sizeof(struct disklabel));
> diff --git sys/kern/subr_userconf.c sys/kern/subr_userconf.c
> index a86660c0d28..5b5a8e994ff 100644
> --- sys/kern/subr_userconf.c
> +++ sys/kern/subr_userconf.c
> @@ -118,7 +118,7 @@ userconf_init(void)
> struct cfdata *cd;
> int ln;
>
> - while (cfdata[i].cf_attach != 0) {
> + while (cfdata[i].cf_attach != NULL) {
> userconf_maxdev = i;
> userconf_totdev = i;
>
> @@ -132,7 +132,7 @@ userconf_init(void)
> i++;
> }
>
> - while (cfdata[i].cf_attach == 0) {
> + while (cfdata[i].cf_attach == NULL) {
> userconf_totdev = i;
> i++;
> }
> @@ -884,7 +884,7 @@ userconf_common_dev(char *dev, int len, short unit, short
> state, char routine)
> break;
> }
>
> - while (cfdata[i].cf_attach != 0) {
> + while (cfdata[i].cf_attach != NULL) {
> if (strlen(cfdata[i].cf_driver->cd_name) == len) {
>
> /*
> @@ -1108,7 +1108,7 @@ userconf_add(char *dev, int len, short unit, short
> state)
> /* Find max unit number of the device type */
>
> i = 0;
> - while (cfdata[i].cf_attach != 0) {
> + while (cfdata[i].cf_attach != NULL) {
> if (strlen(cfdata[i].cf_driver->cd_name) == len &&
> strncasecmp(dev, cfdata[i].cf_driver->cd_name,
> len) == 0) {
> @@ -1133,7 +1133,7 @@ userconf_add(char *dev, int len, short unit, short
> state)
> star_unit = -1;
>
> i = 0;
> - while (cfdata[i].cf_attach != 0) {
> + while (cfdata[i].cf_attach != NULL) {
> if (strlen(cfdata[i].cf_driver->cd_name) == len &&
> strncasecmp(dev, cfdata[i].cf_driver->cd_name,
> len) == 0) {
> @@ -1152,7 +1152,7 @@ userconf_add(char *dev, int len, short unit, short
> state)
> star_unit++;
>
> i = 0;
> - while (cfdata[i].cf_attach != 0) {
> + while (cfdata[i].cf_attach != NULL) {
> if (strlen(cfdata[i].cf_driver->cd_name) == len &&
> strncasecmp(dev, cfdata[i].cf_driver->cd_name,
> len) == 0) {
> diff --git sys/kern/sys_socket.c sys/kern/sys_socket.c
> index f522890eb29..0c54cc00ecf 100644
> --- sys/kern/sys_socket.c
> +++ sys/kern/sys_socket.c
> @@ -216,6 +216,6 @@ soo_close(struct file *fp, struct proc *p)
> flags = (fp->f_flag & FNONBLOCK) ? MSG_DONTWAIT : 0;
> error = soclose(fp->f_data, flags);
> }
> - fp->f_data = 0;
> + fp->f_data = NULL;
> return (error);
> }
> diff --git sys/kern/tty.c sys/kern/tty.c
> index 7f41b2bf923..aac85909d94 100644
> --- sys/kern/tty.c
> +++ sys/kern/tty.c
> @@ -1452,7 +1452,7 @@ ttypend(struct tty *tp)
> SET(tp->t_state, TS_TYPEN);
> tq = tp->t_rawq;
> tp->t_rawq.c_cc = 0;
> - tp->t_rawq.c_cf = tp->t_rawq.c_cl = 0;
> + tp->t_rawq.c_cf = tp->t_rawq.c_cl = NULL;
> while ((c = getc(&tq)) >= 0)
> ttyinput(c, tp);
> CLR(tp->t_state, TS_TYPEN);
> diff --git sys/kern/tty_pty.c sys/kern/tty_pty.c
> index 660a2e86a9b..82c6f9230fd 100644
> --- sys/kern/tty_pty.c
> +++ sys/kern/tty_pty.c
> @@ -334,7 +334,7 @@ ptswrite(dev_t dev, struct uio *uio, int flag)
> struct pt_softc *pti = pt_softc[minor(dev)];
> struct tty *tp = pti->pt_tty;
>
> - if (tp->t_oproc == 0)
> + if (tp->t_oproc == NULL)
> return (EIO);
> return ((*linesw[tp->t_line].l_write)(tp, uio, flag));
> }
> @@ -428,7 +428,7 @@ ptcclose(dev_t dev, int flag, int devtype, struct proc *p)
>
> (void)(*linesw[tp->t_line].l_modem)(tp, 0);
> tp->t_state &= ~TS_CARR_ON;
> - tp->t_oproc = 0; /* mark closed */
> + tp->t_oproc = NULL; /* mark closed */
> return (0);
> }
>
> diff --git sys/kern/uipc_syscalls.c sys/kern/uipc_syscalls.c
> index 59aa2e56589..88291f0e58b 100644
> --- sys/kern/uipc_syscalls.c
> +++ sys/kern/uipc_syscalls.c
> @@ -513,7 +513,7 @@ sys_sendto(struct proc *p, void *v, register_t *retval)
> msg.msg_namelen = SCARG(uap, tolen);
> msg.msg_iov = &aiov;
> msg.msg_iovlen = 1;
> - msg.msg_control = 0;
> + msg.msg_control = NULL;
> msg.msg_flags = 0;
> aiov.iov_base = (char *)SCARG(uap, buf);
> aiov.iov_len = SCARG(uap, len);
> @@ -708,7 +708,7 @@ sys_recvfrom(struct proc *p, void *v, register_t *retval)
> msg.msg_iovlen = 1;
> aiov.iov_base = SCARG(uap, buf);
> aiov.iov_len = SCARG(uap, len);
> - msg.msg_control = 0;
> + msg.msg_control = NULL;
> msg.msg_flags = SCARG(uap, flags);
> return (recvit(p, SCARG(uap, s), &msg,
> (caddr_t)SCARG(uap, fromlenaddr), retval));
> @@ -1048,7 +1048,7 @@ sys_getsockname(struct proc *p, void *v, register_t
> *retval)
> goto bad;
> m = m_getclr(M_WAIT, MT_SONAME);
> s = solock(so);
> - error = (*so->so_proto->pr_usrreq)(so, PRU_SOCKADDR, 0, m, 0, p);
> + error = (*so->so_proto->pr_usrreq)(so, PRU_SOCKADDR, NULL, m, NULL, p);
> sounlock(so, s);
> if (error)
> goto bad;
> @@ -1091,7 +1091,7 @@ sys_getpeername(struct proc *p, void *v, register_t
> *retval)
> goto bad;
> m = m_getclr(M_WAIT, MT_SONAME);
> s = solock(so);
> - error = (*so->so_proto->pr_usrreq)(so, PRU_PEERADDR, 0, m, 0, p);
> + error = (*so->so_proto->pr_usrreq)(so, PRU_PEERADDR, NULL, m, NULL, p);
> sounlock(so, s);
> if (error)
> goto bad;
> diff --git sys/kern/uipc_usrreq.c sys/kern/uipc_usrreq.c
> index fc9125b87b8..d8914276ef6 100644
> --- sys/kern/uipc_usrreq.c
> +++ sys/kern/uipc_usrreq.c
> @@ -655,7 +655,7 @@ unp_connect(struct socket *so, struct mbuf *nam, struct
> proc *p)
> }
> if (so->so_proto->pr_flags & PR_CONNREQUIRED) {
> if ((so2->so_options & SO_ACCEPTCONN) == 0 ||
> - (so3 = sonewconn(so2, 0)) == 0) {
> + (so3 = sonewconn(so2, 0)) == NULL) {
> error = ECONNREFUSED;
> goto put_locked;
> }
> diff --git sys/kern/vfs_biomem.c sys/kern/vfs_biomem.c
> index b3c41c6551a..1f517296484 100644
> --- sys/kern/vfs_biomem.c
> +++ sys/kern/vfs_biomem.c
> @@ -238,7 +238,7 @@ buf_unmap(struct buf *bp)
> TAILQ_REMOVE(&buf_valist, bp, b_valist);
> bcstats.kvaslots_avail--;
> va = (vaddr_t)bp->b_data;
> - bp->b_data = 0;
> + bp->b_data = NULL;
> pmap_kremove(va, bp->b_bufsize);
> pmap_update(pmap_kernel());
>
> diff --git sys/kern/vfs_lookup.c sys/kern/vfs_lookup.c
> index 94943dad1e1..b094cf577aa 100644
> --- sys/kern/vfs_lookup.c
> +++ sys/kern/vfs_lookup.c
> @@ -381,7 +381,7 @@ int
> vfs_lookup(struct nameidata *ndp)
> {
> char *cp; /* pointer into pathname argument */
> - struct vnode *dp = 0; /* the directory we are searching */
> + struct vnode *dp = NULL; /* the directory we are searching */
> struct vnode *tdp; /* saved dp */
> struct mount *mp; /* mount table entry */
> int docache; /* == 0 do not cache last component */
> @@ -725,7 +725,7 @@ bad:
> int
> vfs_relookup(struct vnode *dvp, struct vnode **vpp, struct componentname
> *cnp)
> {
> - struct vnode *dp = 0; /* the directory we are searching */
> + struct vnode *dp = NULL; /* the directory we are searching */
> int wantparent; /* 1 => wantparent or lockparent flag */
> int rdonly; /* lookup read-only flag bit */
> int error = 0;
> diff --git sys/kern/vfs_subr.c sys/kern/vfs_subr.c
> index f807760ea9d..6541408ea17 100644
> --- sys/kern/vfs_subr.c
> +++ sys/kern/vfs_subr.c
> @@ -271,8 +271,8 @@ vfs_rootmountalloc(char *fstypename, char *devname,
> struct mount **mpp)
> mp = vfs_mount_alloc(NULLVP, vfsp);
> mp->mnt_flag |= MNT_RDONLY;
> mp->mnt_stat.f_mntonname[0] = '/';
> - copystr(devname, mp->mnt_stat.f_mntfromname, MNAMELEN, 0);
> - copystr(devname, mp->mnt_stat.f_mntfromspec, MNAMELEN, 0);
> + copystr(devname, mp->mnt_stat.f_mntfromname, MNAMELEN, NULL);
> + copystr(devname, mp->mnt_stat.f_mntfromspec, MNAMELEN, NULL);
> *mpp = mp;
> return (0);
> }
> @@ -427,7 +427,7 @@ getnewvnode(enum vtagtype tag, struct mount *mp, const
> struct vops *vops,
> if (vp == NULL) {
> splx(s);
> tablefull("vnode");
> - *vpp = 0;
> + *vpp = NULL;
> return (ENFILE);
> }
>
> @@ -464,7 +464,7 @@ getnewvnode(enum vtagtype tag, struct mount *mp, const
> struct vops *vops,
> insmntque(vp, mp);
> *vpp = vp;
> vp->v_usecount = 1;
> - vp->v_data = 0;
> + vp->v_data = NULL;
> return (0);
> }
>
> @@ -530,7 +530,7 @@ getdevvp(dev_t dev, struct vnode **vpp, enum vtype type)
> }
> vp = nvp;
> vp->v_type = type;
> - if ((nvp = checkalias(vp, dev, NULL)) != 0) {
> + if ((nvp = checkalias(vp, dev, NULL)) != NULL) {
> vput(vp);
> vp = nvp;
> }
> @@ -1147,7 +1147,8 @@ vgonel(struct vnode *vp, struct proc *p)
> * If special device, remove it from special device alias list
> * if it is on one.
> */
> - if ((vp->v_type == VBLK || vp->v_type == VCHR) && vp->v_specinfo != 0) {
> + if ((vp->v_type == VBLK || vp->v_type == VCHR) &&
> + vp->v_specinfo != NULL) {
> if ((vp->v_flag & VALIASED) == 0 && vp->v_type == VCHR &&
> (cdevsw[major(vp->v_rdev)].d_flags & D_CLONE) &&
> (minor(vp->v_rdev) >> CLONE_SHIFT == 0)) {
> @@ -1427,7 +1428,7 @@ vfs_hang_addrlist(struct mount *mp, struct netexport
> *nep,
> struct radix_node_head *rnh;
> int nplen, i;
> struct radix_node *rn;
> - struct sockaddr *saddr, *smask = 0;
> + struct sockaddr *saddr, *smask = NULL;
> int error;
>
> if (argp->ex_addrlen == 0) {
> @@ -1480,7 +1481,7 @@ vfs_hang_addrlist(struct mount *mp, struct netexport
> *nep,
> goto out;
> }
> rn = rn_addroute(saddr, smask, rnh, np->netc_rnodes, 0);
> - if (rn == 0 || np != (struct netcred *)rn) { /* already exists */
> + if (rn == NULL || np != (struct netcred *)rn) { /* already exists */
> error = EPERM;
> goto out;
> }
> @@ -1749,7 +1750,7 @@ vfs_shutdown(struct proc *p)
>
> printf("syncing disks...");
>
> - if (panicstr == 0) {
> + if (panicstr == NULL) {
> /* Sync before unmount, in case we hang on something. */
> sys_sync(p, NULL, NULL);
> vfs_unmountall();
--
Sebastien Marie