From 9ec715be74370746efb3ab9de4ce90d3ee584342 Mon Sep 17 00:00:00 2001 From: Andrew Hanushevsky Date: Fri, 16 Oct 2020 16:18:14 -0700 Subject: [PATCH] {Server] Replace all occurrences of memalign() with posix_memalign(). --- src/Xrd/XrdBuffXL.cc | 2 +- src/Xrd/XrdBuffer.cc | 2 +- src/Xrd/XrdPollE.icc | 3 ++- src/Xrd/XrdPollPoll.icc | 3 ++- src/Xrd/XrdStats.cc | 3 ++- src/XrdNet/XrdNetBuffer.cc | 2 +- src/XrdOuc/XrdOucBuffer.hh | 4 ++-- src/XrdSciTokens/XrdSciTokens | 2 +- src/XrdSys/XrdSysIOEventsPollPort.icc | 2 +- src/XrdSys/XrdSysLogging.cc | 2 +- src/XrdSys/XrdSysPlatform.hh | 8 +++----- src/XrdXrootd/XrdXrootdGSReal.cc | 7 ++++--- src/XrdXrootd/XrdXrootdMonitor.cc | 5 ++--- 13 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/Xrd/XrdBuffXL.cc b/src/Xrd/XrdBuffXL.cc index c3b9392422e..d339e16122b 100644 --- a/src/Xrd/XrdBuffXL.cc +++ b/src/Xrd/XrdBuffXL.cc @@ -134,7 +134,7 @@ XrdBuffer *XrdBuffXL::Obtain(int sz) // Allocate a chunk of aligned memory // - if (!(memp = static_cast(memalign(pagsz, buffSz)))) return 0; + if (posix_memalign((void **)&memp, pagsz, buffSz)) return 0; // Wrap the memory with a buffer object // diff --git a/src/Xrd/XrdBuffer.cc b/src/Xrd/XrdBuffer.cc index 470e5ea3a01..593ea0587ff 100644 --- a/src/Xrd/XrdBuffer.cc +++ b/src/Xrd/XrdBuffer.cc @@ -175,7 +175,7 @@ XrdBuffer *XrdBuffManager::Obtain(int sz) // Allocate a chunk of aligned memory // pk = (mk < pagsz ? mk : pagsz); - if (!(memp = static_cast(memalign(pk, mk)))) return 0; + if (posix_memalign((void **)&memp, pk, mk)) return 0; // Wrap the memory with a buffer object // diff --git a/src/Xrd/XrdPollE.icc b/src/Xrd/XrdPollE.icc index fecc48ff190..80dd347182f 100644 --- a/src/Xrd/XrdPollE.icc +++ b/src/Xrd/XrdPollE.icc @@ -33,6 +33,7 @@ #endif #include +#include #include #include #include @@ -63,7 +64,7 @@ XrdPoll *XrdPoll::newPoller(int pollid, int maxfd) // bytes = maxfd * sizeof(struct epoll_event); alignment = (bytes < pagsz ? 1024 : pagsz); - if (!(pp = (struct epoll_event *)memalign(alignment, bytes))) + if (posix_memalign((void **)&pp, alignment, bytes)) {Log.Emsg("Poll", ENOMEM, "create poll table"); close(pfd); return 0; diff --git a/src/Xrd/XrdPollPoll.icc b/src/Xrd/XrdPollPoll.icc index acbefcad91c..1754139fcf7 100644 --- a/src/Xrd/XrdPollPoll.icc +++ b/src/Xrd/XrdPollPoll.icc @@ -32,6 +32,7 @@ #endif #include +#include #include "Xrd/XrdLinkCtl.hh" #include "Xrd/XrdPollPoll.hh" @@ -50,7 +51,7 @@ XrdPoll *XrdPoll::newPoller(int pollid, int maxfd) // bytes = maxfd * sizeof(struct pollfd); alignment = (bytes < pagsz ? 1024 : pagsz); - if (!(pp = (struct pollfd *)memalign(alignment, bytes))) + if (posix_memalign((void **)&pp, alignment, bytes)) {Log.Emsg("Poll", ENOMEM, "create poll table"); return 0; } diff --git a/src/Xrd/XrdStats.cc b/src/Xrd/XrdStats.cc index 7889a67d949..76e92868d74 100644 --- a/src/Xrd/XrdStats.cc +++ b/src/Xrd/XrdStats.cc @@ -31,6 +31,7 @@ #include #endif #include +#include #include #include @@ -195,7 +196,7 @@ const char *XrdStats::GenStats(int &rsz, int opts) // statsMutex must be locked! {blen = InfoStats(0,0) + BuffPool->Stats(0,0) + XrdLink::Stats(0,0) + ProcStats(0,0) + XrdSched->Stats(0,0) + XrdPoll::Stats(0,0) + XrdProtLoad::Statistics(0,0) + ovrhed + Hlen; - buff = (char *)memalign(getpagesize(), blen+256); + if (posix_memalign((void **)&buff, getpagesize(), blen+256)) buff = 0; if (!(bp = buff)) {rsz = snulsz; return snul;} } bl = blen; diff --git a/src/XrdNet/XrdNetBuffer.cc b/src/XrdNet/XrdNetBuffer.cc index 5d5be42a92c..0f79df9cfaa 100644 --- a/src/XrdNet/XrdNetBuffer.cc +++ b/src/XrdNet/XrdNetBuffer.cc @@ -83,7 +83,7 @@ XrdNetBuffer *XrdNetBufferQ::Alloc() // if ((bp = BuffStack.Pop())) numbuff--; else if ((bp = new XrdNetBuffer(this)) - && !(bp->data = (char *)memalign(alignit, size))) + && posix_memalign((void **)&(bp->data), alignit, size)) {delete bp; bp = 0;} // Unlock the data area diff --git a/src/XrdOuc/XrdOucBuffer.hh b/src/XrdOuc/XrdOucBuffer.hh index 41238fa9af6..2e48670244e 100644 --- a/src/XrdOuc/XrdOucBuffer.hh +++ b/src/XrdOuc/XrdOucBuffer.hh @@ -248,8 +248,8 @@ inline void SetLen(int dataL, int dataO=0) {dlen = dataL; doff = dataO;} //! the Clone(), Highjack() and Resize() methods will always fail. However, //! all the other methods will work in the expected way. //! -//! @param buff - pointer to a storage area obtained via malloc and its -//! relatives (e.g. memalign). It will be released via free(). +//! @param buff - pointer to a storage area obtained via posix_memalign() +//! and it will be released via free(). //! @param blen - the size of the buffer as well as the data length. //! Use SetLen() to set a new data length if it differs. //----------------------------------------------------------------------------- diff --git a/src/XrdSciTokens/XrdSciTokens b/src/XrdSciTokens/XrdSciTokens index d200b85df92..9e414737fbd 160000 --- a/src/XrdSciTokens/XrdSciTokens +++ b/src/XrdSciTokens/XrdSciTokens @@ -1 +1 @@ -Subproject commit d200b85df9293ea49ee7d7c845173d17a25c645b +Subproject commit 9e414737fbdfb0f2b4a313c3e6d3a628606d67eb diff --git a/src/XrdSys/XrdSysIOEventsPollPort.icc b/src/XrdSys/XrdSysIOEventsPollPort.icc index c87008df54c..7c28b0644b2 100644 --- a/src/XrdSys/XrdSysIOEventsPollPort.icc +++ b/src/XrdSys/XrdSysIOEventsPollPort.icc @@ -164,7 +164,7 @@ int XrdSys::IOEvents::PollPort::AllocMem(void **memP, int slots) // bytes = slots * sizeof(port_event_t); alignment = (bytes < pagsz ? 1024 : pagsz); - if (!(*memP = memalign(alignment, bytes))) return ENOMEM; + if (posix_memalign(memP, alignment, bytes)) return ENOMEM; memset(*memP, 0, bytes); return 0; } diff --git a/src/XrdSys/XrdSysLogging.cc b/src/XrdSys/XrdSysLogging.cc index b6e76c2c032..95d8af081b9 100644 --- a/src/XrdSys/XrdSysLogging.cc +++ b/src/XrdSys/XrdSysLogging.cc @@ -107,7 +107,7 @@ bool XrdSysLogging::Configure(XrdSysLogger &logr, Parms &parms) // Allocate a log buffer // int bsz = (parms.bufsz < 0 ? 65536 : parms.bufsz); - rc = posix_memalign(reinterpret_cast(&buffOrg), getpagesize(), bsz); + rc = posix_memalign((void **)&buffOrg, getpagesize(), bsz); if (rc != 0 || !buffOrg) return EMsg(logr, "Unable to allocate log buffer!\n"); buffBeg = buffOrg + buffOvhd; diff --git a/src/XrdSys/XrdSysPlatform.hh b/src/XrdSys/XrdSysPlatform.hh index 0f87d2048aa..82f6599095d 100644 --- a/src/XrdSys/XrdSysPlatform.hh +++ b/src/XrdSys/XrdSysPlatform.hh @@ -62,7 +62,9 @@ #include #endif -#ifdef __solaris__ +// The following provides historical support for Solaris 5.10.x +// +#if defined(__solaris__) && defined(__SunOS_5_10) #define posix_memalign(memp, algn, sz) \ ((*memp = memalign(algn, sz)) ? 0 : ENOMEM) #define __USE_LEGACY_PROTOTYPES__ 1 @@ -121,9 +123,6 @@ typedef off_t offset_t; #define POLLWRNORM 0 #endif #define O_LARGEFILE 0 -#define memalign(pgsz,amt) valloc(amt) -#define posix_memalign(memp, algn, sz) \ - ((*memp = memalign(algn, sz)) ? 0 : ENOMEM) #define SHMDT_t void * #ifndef EDEADLOCK #define EDEADLOCK EDEADLK @@ -133,7 +132,6 @@ typedef off_t offset_t; #ifdef __FreeBSD__ #define O_LARGEFILE 0 typedef off_t off64_t; -#define memalign(pgsz,amt) valloc(amt) #endif // Only sparc platforms have structure alignment problems w/ optimization diff --git a/src/XrdXrootd/XrdXrootdGSReal.cc b/src/XrdXrootd/XrdXrootdGSReal.cc index 1c76f21a61b..d1a635848ba 100644 --- a/src/XrdXrootd/XrdXrootdGSReal.cc +++ b/src/XrdXrootd/XrdXrootdGSReal.cc @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -72,7 +73,7 @@ XrdXrootdGSReal::XrdXrootdGSReal(const XrdXrootdGSReal::GSParms &gsParms, static const int minSZ = 1024; static const int dflSZ = 1024*32; static const int maxSZ = 1024*64; - int flsT, maxL, hdrLen, pgSZ = getpagesize(); + int flsT, maxL, hdrLen; // Do common initialization // @@ -89,8 +90,8 @@ XrdXrootdGSReal::XrdXrootdGSReal(const XrdXrootdGSReal::GSParms &gsParms, // Allocate the UDP buffer // - if (maxL < pgSZ) udpBuffer = (char *)memalign(maxL, maxL); - else udpBuffer = (char *)memalign(pgSZ, maxL); + int align = (maxL < getpagesize() ? maxL : getpagesize()); + if (posix_memalign((void **)&udpBuffer, align, maxL)) {aOK = false; return;} // Setup the header as needed // diff --git a/src/XrdXrootd/XrdXrootdMonitor.cc b/src/XrdXrootd/XrdXrootdMonitor.cc index 5a1398f7a61..fdbadf45703 100644 --- a/src/XrdXrootd/XrdXrootdMonitor.cc +++ b/src/XrdXrootd/XrdXrootdMonitor.cc @@ -339,7 +339,7 @@ XrdXrootdMonitor::XrdXrootdMonitor() // Allocate a monitor buffer // - if (!(monBuff = (XrdXrootdMonBuff *)memalign(getpagesize(), monBlen))) + if (posix_memalign((void **)&monBuff, getpagesize(), monBlen)) eDest->Emsg("Monitor", "Unable to allocate monitor buffer."); else {nextEnt = 1; setTMark(monBuff, 0, localWindow); @@ -745,8 +745,7 @@ int XrdXrootdMonitor::Init() // Allocate as many redirection monitors as requested // for (i = 0; i < rdrNum; i++) - {rdrMon[i].Buff = (XrdXrootdMonBurr *)memalign(getpagesize(),monRlen); - if (!rdrMon[i].Buff) + {if (posix_memalign((void **)&rdrMon[i].Buff, getpagesize(),monRlen)) {eDest->Emsg("Monitor", "Unable to allocate monitor rdr buffer."); return 0; }