It's also worth noting that we don't actually *do* an attach()... On Jan 29, 2014, at 10:02 AM, Jim Jagielski <[email protected]> wrote:
> But I would prefer others testing as well... > > It's worth noting that it's just slotmem which did > this and so, if it was "required" any other use of > shared mem which child processes needed to have access > to cross forks would be broken. And it was just the SysV > shm which did this. > > I *still* think that APR should backport the set_perm stuff > from trunk to 1.5, but I think that breaks ABI. But *that's* > where it belongs (in apr, not httpd). > > On Jan 29, 2014, at 7:33 AM, Jim Jagielski <[email protected]> wrote: > >> Yes, it still works (at least in all my testing) :) >> >> On Jan 28, 2014, at 12:48 PM, Jeff Trawick <[email protected]> wrote: >> >>> On Sat, Jan 25, 2014 at 3:11 PM, <[email protected]> wrote: >>> Author: jim >>> Date: Sat Jan 25 20:11:50 2014 >>> New Revision: 1561385 >>> >>> URL: http://svn.apache.org/r1561385 >>> Log: >>> Remove wonky and unneeded code. We have access >>> cross forks, so child processes have access. >>> >>> I see that you are saying it is okay, but I have to ask anyway: For SysV >>> shared memory specifically, apr_shm_attach() in the child still works when >>> parent is root and child is not root? >>> >>> >>> When we need true external access, this is something >>> that APR shm must provide. We should have no >>> knowledge of APR internals. >>> >>> Modified: >>> httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c >>> >>> Modified: httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c >>> URL: >>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c?rev=1561385&r1=1561384&r2=1561385&view=diff >>> ============================================================================== >>> --- httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c (original) >>> +++ httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c Sat Jan 25 20:11:50 >>> 2014 >>> @@ -88,40 +88,6 @@ static apr_pool_t *gpool = NULL; >>> #define DEFAULT_SLOTMEM_SUFFIX ".shm" >>> #define DEFAULT_SLOTMEM_PERSIST_SUFFIX ".persist" >>> >>> -/* apr:shmem/unix/shm.c */ >>> -static apr_status_t unixd_set_shm_perms(const char *fname) >>> -{ >>> -#ifdef AP_NEED_SET_MUTEX_PERMS >>> -#if APR_USE_SHMEM_SHMGET || APR_USE_SHMEM_SHMGET_ANON >>> - struct shmid_ds shmbuf = { { 0 } }; >>> - key_t shmkey; >>> - int shmid; >>> - >>> - shmkey = ftok(fname, 1); >>> - if (shmkey == (key_t)-1) { >>> - return errno; >>> - } >>> - if ((shmid = shmget(shmkey, 0, SHM_R | SHM_W)) == -1) { >>> - return errno; >>> - } >>> -#if MODULE_MAGIC_NUMBER_MAJOR <= 20081212 >>> -#define ap_unixd_config unixd_config >>> -#endif >>> - shmbuf.shm_perm.uid = ap_unixd_config.user_id; >>> - shmbuf.shm_perm.gid = ap_unixd_config.group_id; >>> - shmbuf.shm_perm.mode = 0600; >>> - if (shmctl(shmid, IPC_SET, &shmbuf) == -1) { >>> - return errno; >>> - } >>> - return APR_SUCCESS; >>> -#else >>> - return APR_ENOTIMPL; >>> -#endif >>> -#else >>> - return APR_ENOTIMPL; >>> -#endif >>> -} >>> - >>> /* >>> * Persist the slotmem in a file >>> * slotmem name and file name. >>> @@ -413,15 +379,6 @@ static apr_status_t slotmem_create(ap_sl >>> if (rv != APR_SUCCESS) { >>> return rv; >>> } >>> - if (fbased) { >>> - /* Set permissions to shared memory >>> - * so it can be attached by child process >>> - * having different user credentials >>> - * >>> - * See apr:shmem/unix/shm.c >>> - */ >>> - unixd_set_shm_perms(fname); >>> - } >>> ptr = (char *)apr_shm_baseaddr_get(shm); >>> desc.size = item_size; >>> desc.num = item_num; >>> >>> >>> >>> >>> >>> -- >>> Born in Roswell... married an alien... >>> http://emptyhammock.com/ >> >
